gpt4 book ai didi

android - 从 AsyncTask 调用 UI 线程方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:19 25 4
gpt4 key购买 nike

我在从 AsyncTaskActivity onPostExecute() 方法内部调用 setadapter() 方法时遇到问题。我读过有关 AsyncTask 的文档:http://developer.android.com/reference/android/os/AsyncTask.html#onPostExecute(Result ) 但没有找到如何实现的答案。我应该使用 Intent 这样做吗?我是 Android 开发的新手,所以如果这是一个愚蠢的问题,请原谅我。

主要 Activity

public class MainActivity extends ListActivity {

private String[] columns = new String[] {"foreign_word", "native_word"};
private int[] target = new int[] { R.id.foreign_word, R.id.native_word };
private Cursor cur = null;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

new AsyncTaskActivity(this).execute();
}

public void setadapter(Cursor cur) {
SimpleCursorAdapter aaa = new SimpleCursorAdapter(this.getApplicationContext(), R.layout.list_entry, cur, columns, target, 0);
this.setListAdapter(aaa);
}
}

异步任务 Activity

public class AsyncTaskActivity extends AsyncTask<Void, Void, Cursor> {

Activity activity = null;
private SQLiteDatabase db = null;
private String[] selection = {"_id", "native_word", "foreign_word"};
Cursor cur = null;


public AsyncTaskActivity(Activity activity) {
this.activity = activity;
}

@Override
protected Cursor doInBackground(Void... params) {
DbAdapter mSQLadapter = new DbAdapter(activity);
db = mSQLadapter.getWritableDatabase();
Cursor cur = db.query("words", selection, "foreign_word='car'", null, null, null, null);
return cur;
}

protected void onPostExecute(Cursor cur) {

// I'd like to call setadapter() ,passing it Cursor as a parameter

}

}

最佳答案

假设您的 AsyncTask 总是被 MainActivity 调用,执行此操作

protected void onPostExecute(Cursor cur) {
MainActivity mActivity = (MainActivity) activity;
mActivity.setadapter();
}

您可以为您的setAdapter 方法指定更多参数,这样您就可以传递CursorString 数组等。

然而,如果 AsyncTask 仅从 MainActivity 调用,则更好的方法是使此 AsyncTask 成为 中的私有(private)内部类主 Activity 。这将允许它访问 MainActivity

的所有全局变量和方法

关于android - 从 AsyncTask 调用 UI 线程方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14106429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com