2

如果我在适配器的函数AsyncTask内启动一个,稍后将Fragment 传递给作为参数(见下文)。getItem()ViewPagergetItem()AsyncTask

然后我可以在s中调用属于 Fragment ( setString())的方法吗?这是否仍会影响显示的 Fragment,即使它很可能在完成之前已由s返回?AsyncTaskonPostExecuteViewPagergetItem()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);
        }
    }

抱歉,如果我解释的方式难以理解,代码应该更好地解释它

基本上我想问题是,即使ViewPagersgetItem()已经返回了片段,我仍然可以在父 Activity 中更改片段属性吗?

4

0 回答 0