我有一些问题。 在主要活动中,我创建按钮
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);
}
}
}
}
但是在一系列词汇中,在屏幕“冻结”时。如何在此褪色时制作标准progresbar?了解应用程序运行的用户。
答案 0 :(得分:1)
使用AsyncTask。
https://developer.android.com/reference/android/os/AsyncTask.html
你很可能不得不重新安排你的代码,但如果你的for循环长时间运行,那就是“冻结”你的应用程序。 AsyncTask有3种方法可以实现这一目标。在onPreExecute中显示您的进度条。然后在doInBackground()中,您将需要执行for循环逻辑。在onPostExecute()中,您可以将创建的所有按钮添加到视图中。您必须仅在UI线程上执行前/后执行方法中修改UI,而在UI线程中不执行doInBackground,并且如果您尝试修改UI,则会抛出异常。