我需要知道如何在AsyncTask中创建一个TextView:
在doInBackground的实时动作期间。感谢
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.inicio);
tareaAsincInicio = new tareaAsincronaInicio();
tareaAsincInicio.execute();
}
private class tareaAsincronaInicio extends AsyncTask<Void, Integer, Boolean> {
protected void onPreExecute() {
...
}
protected Boolean doInBackground(Void... params) {
...
methods();
}
protected void onPostExecute(Boolean result) {
Intent i = new Intent(Inicio.this, MainActivity.class);
startActivity(i);
finish();
}
protected void onProgressUpdate(Integer... values) {
...
}
}
答案 0 :(得分:1)
实际上,如果您需要每1秒更新一次textview,最好使用CountDownTimer:
其他信息:http://developer.android.com/reference/android/os/CountDownTimer.html
以下是示例:http://androidbite.blogspot.com/2012/11/android-count-down-timer-example.html
您在onPreExecute()
中启动此CountDownTimer并在onPostExecute()
答案 1 :(得分:0)
您可以使用启动onPreExecute()
string text = "Loading."
boolean async = true;
handler=new Handler();
final Runnable r = new Runnable()
{
public void run()
{
if(text.contains("..."))
text = "Loading." else
text = text+".";
tv.setText(text);
if(async)
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
这样做就是每隔一秒调用一次runnable来改变文本。当您到达onPostExecute()
时,将async
值更改为false并停止runnable。
答案 2 :(得分:0)
让doInBackground
来电publishProgress()
并传递您想要显示的文字。然后在onProgressUpdate()
设置您的文字视图。
new AsyncTask<Void, String, Void>(){
@Override
protected Void doInBackground(Void... params) {
publishProgress("updated text");
return null;
}
@Override
protected void onProgressUpdate(String... values) {
textView.setText(values[0]);
}
};
答案 3 :(得分:0)
您可以创建一个处理程序作为属性,然后在runnable interface
中执行预先执行和更改对话框标题