2016-11-08 118 views
0

我有一些問題。 在主要活動中,我創建按鈕加載活動時的進度條

Button button=new Button(this); 
       button.setId(i); 
       button.setWidth(20); 
       button.setBackgroundColor(Color.TRANSPARENT); 
       button.setLayoutParams(params); 
       button.setText(nazv); 
       button.setTextSize(22); 
       button.setTextColor(0xFF2C85A6); 
       button.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View view) { 

         Intent is = new Intent(getApplicationContext(), termin.class); 
         is.putExtra("LetVariable", nazv); 
         startActivity(is); 
        } 
       }); 

LetVariable - 是詞的第一個字母。它在Activiti 的終端中傳輸,在這裏可以選擇這個字母的數據集。

public class termin extends AppCompatActivity { 

     String[] mArray; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.termin); 
      getSupportActionBar().hide(); 
      Intent mIntent = getIntent(); 
      String LetValue = mIntent.getStringExtra("LetVariable"); 

      int length =0; 

      length =getResources().getStringArray(R.array.terms).length; 

      mArray = getResources().getStringArray(R.array.terms); 
      final LinearLayout linearLayout=(LinearLayout)findViewById(R.id.buttonlayout); 

      TextView opisTextView = (TextView)findViewById(R.id.TermTextView); 
      opisTextView.setText("Terms starting with "+LetValue); 

      for(int i=0;i<length;i++){ 

       // 

       final String nazv = mArray[i]; 
       final String[] splittedItem = nazv.split("::"); 
       final String fLet=Character.toString(splittedItem[0].charAt(0)); 




       if(fLet.equals(LetValue)) 

       { 

       Button button=new Button(this); 
       button.setId(i); 



        button.setText(splittedItem[0]); 
        button.setBackgroundColor(Color.TRANSPARENT); 
        button.setTextSize(19); 
        button.setGravity(Gravity.LEFT); 
        button.setTextColor(0xFF2C85A6); 
        button.setOnClickListener(new View.OnClickListener() { 
         public void onClick(View view) { 

          Intent is = new Intent(getApplicationContext(), termin_full.class); 
          is.putExtra("fVariableName", nazv); 
          startActivity(is); 
         } 
        }); 


       linearLayout.addView(button); 
       } 
      } 


     } 
    } 

但是,正如在一個多字的數組中,在屏幕「凍結」時。在這種衰落時如何製作標準的進度條?瞭解應用程序工作的用戶。

回答

1

使用AsyncTask。

https://developer.android.com/reference/android/os/AsyncTask.html

你將極有可能重新安排你的代碼了一下,但如果你的for循環是長時間運行的是什麼是「凍結」你的應用程序。 AsyncTask有3種方法來完成這個任務。在onPreExecute顯示你的進度條。然後在doInBackground()中,您將需要執行for循環邏輯。在onPostExecute()中,您可以將您創建的所有按鈕添加到視圖中。在UI線程中執行前/後執行方法時,您只能修改UI,而在UI線程中執行doInBackground並且在嘗試修改UI時會拋出異常。

+0

非常有趣,並可以設置使用onPostExecute()和doInBackground()的例子嗎? –

+0

這是一個簡單但很好的例子; http://www.journaldev.com/9708/android-asynctask-example-tutorial – RoLAN210

+0

tnx!很合拍 –