我想从AsycTask更新文本视图,微调器。实际上我在做什么
我从服务器获取数据并以json形式返回结果然后我解析JSON并在两个Spinner和一个textview中填充数据。当我使用Asyctask时我如何更新数据因为Textview不更新..这是我的代码狙击
TAG_CONFIG = "xyz"
TAG_CONFIG1 = "yyy"
JSONParser jParser = null;
JSONObject json = null;
jParser = new JSONParser();
json = jParser.getJSONFromUrl(url);
try {
// Getting Array of Contacts
contacts = json.getJSONArray(TAG_CONFIG);
for (int i = 0; i < contacts.length(); i++) {
JSONArray c = contacts.getJSONArray(i);
CompanyName = new String[c.length()];
for (int j = 0; j < c.length(); j++) {
CompanyName[j] = c.getString(j);
}
}
类似于tab_confg1 ...
答案 0 :(得分:2)
doInBackground
未与主UI线程同步...因此,您无法直接通过此方法更新您的用户界面(您必须使用Handler
或mContext.runOnUiThread()
代替)。但是,您可以从onPostExecute
更新UI,因为此方法是在UI线程上执行的。
答案 1 :(得分:0)
使用runOnUiThread从doInBackground
的非UI线程访问用户界面。
@Override
protected String doInBackground(Void... params) {
Activity_Name.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// your code here to access UI elements
}
});
return "string";
}
答案 2 :(得分:0)
试试这个......
1。每当我们开始 Android中的应用时,我们从专用用户界线开始。
<强> 2。创建任何线程都会将一个从UI线程中删除。
3. 建议在UI线程中保持UI工作,非UI线程中的非UI工作是可取的,但它 随着HoneyComb Android版的发布,它成为了规则。
4. 虽然可以使用非UI线程将工作从使用处理程序发布到UI线程,但Android提供了AsyncTask,这有助于同步完成的工作。 非UI线程返回UI线程
在 AsyncTask&lt;&gt;
中---&GT; doInBackground()将处理非UI工作。
---&GT; PostExectue()将有助于将非UI工作发布回UI线程。