如果我在适配器的函数AsyncTask
内启动一个,稍后将Fragment 传递给作为参数(见下文)。getItem()
ViewPager
getItem()
AsyncTask
然后我可以在s中调用属于 Fragment ( setString()
)的方法吗?这是否仍会影响显示的 Fragment,即使它很可能在完成之前已由s返回?AsyncTask
onPostExecute
ViewPager
getItem()
AsyncTask
private class SlidePagerAdapter extends FragmentStatePagerAdapter {
public Fragment getItem(int position) {
MyListFragment listfrag = new MyListFragment(); //Create the fragment
new AsyncTaskLoader(listfrag).execute(); //Start the AsyncTask, passing the Fragment
return listfrag;
}
}
而我的 AsyncTask 与上面的适配器在同一个 Activity 类中
protected class AsyncTaskLoader extends AsyncTask<String, Void, String> {
private MyListFragment f;
AsyncTaskLoader(MyListFragment f){
this.f=f;
}
protected String doInBackground(String... arg0) {....code...} //This takes a while..
protected void onPostExecute(String result) {
f.setString("hello world"); // Will this still update the fragment created in getItem()?
}
}
和片段类
public class MyListFragment extends ListFragment {
....code....
public setString(String text){
TextView str = (TextView) findViewById(R.id.text);
str.setText(text);
}
}
抱歉,如果我解释的方式难以理解,代码应该更好地解释它
基本上我想问题是,即使ViewPager
sgetItem()
已经返回了片段,我仍然可以在父 Activity 中更改片段属性吗?