我有一个启动画面与TextView来显示应用程序正在做什么,如“更新库”...“更新航运”等。我使用AsyncTask通过API更新我的数据库。在Android中,如何从AsyncTask中更改TextView?
我将更新文本传递给AsyncTask。我需要更改TextView statusMessage
中的文字。我试图做到这一点:
public class JSONParser extends AsyncTask<String, String, JSONObject> {
static InputStream is = null;
static JSONObject json = null;
static String outPut = "";
TextView statusMessage;
@Override
protected void onPreExecute() {
statusMessage = (TextView) findViewById(R.id.statusMessage);
}
...
我的计划是更改doInBackground
法的文本,但findViewById
不在的AsyncTask访问。我想我需要使用setContentView
来允许findViewById
工作,但我不知道如何。
我的Java文件SplashScreen.java
和我的XML是activity_splash_screen.xml
----- -----编辑
欲了解更多的信息,我有三件互相交谈:
闪屏.java - >调用baseActivity.java中的方法 - >方法将数据发送到JSONParser.java - >从API将解析的JSON发送到baseActivity.java以更新数据库
根据以下建议我宣布了
statusMessage = (TextView) findViewById(R.id.statusMessage);
在baseActivity.java的onCreate因为它是文件调用的AsyncTask。
在JSONParser.java我做这个,现在:
public class JSONParser extends AsyncTask<String, String, JSONObject> {
static InputStream is = null;
static JSONObject json = null;
static String outPut = "";
TextView statusMessage;
@Override
protected JSONObject doInBackground(String... params) {
// TODO Auto-generated method stub
...
}
protected void onProgressUpdate() {
statusMessage.setText("testing");
}
protected void onPostExecute(JSONObject result) {
}
}
我只是用“测试”还有用于测试目的。
您可以使用Handler更新TextView(需要在UI线程上发布更新)。 – mbmc
问题已更新 – dcp3450