Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用AsyncTask从片段获取视图_Android_Android Fragments_Android Asynctask - Fatal编程技术网

Android 使用AsyncTask从片段获取视图

Android 使用AsyncTask从片段获取视图,android,android-fragments,android-asynctask,Android,Android Fragments,Android Asynctask,我曾经也不得不这么做 public class MainActivity extends ActionBarActivity { private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pager =

我曾经也不得不这么做

public class MainActivity extends ActionBarActivity {
private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);

    tabs.setShouldExpand(true);
    tabs.setViewPager(pager);
}
}
在每个片段中,我使用
AsyncTask
从服务器获取数据

下面是我的片段类,它从服务器获取html并显示listview

public class MainFragmentSubList extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_main_list, container, false);
    ListView mainList = (ListView) view.findViewById(R.id.fragment_list);

    ArrayList<String> infoList;

    // this is AsyncTask class and i made an interface.
    new GetHtml(new OnRequestFinish(){
        @Override 
        void onFinish(){
            // Below are about ui
            ArrayList<String> titleList = (ArrayList<String>) User.subName.clone();
            int size = infoList.size();
            MainListAdapter adapter = new MainListAdapter(titleList, infoList, size + 1);
            mainList.setAdapter(adapter);
        }  
    }).execute();

    return view;
}

如何使用AsyncTask从片段返回视图?

继续,在
onCreateView
中设置视图。初始化并设置适配器,并使用空列表。为了方便起见,可以使用适配器和列表成员变量


确保AsyncTask的
onPostExecute
调用了
onFinish
,以便它在正确的线程上运行。调用时,更新列表,然后调用适配器的
notifyDataSetChanged()
方法

为什么要从AsyncTask返回'View'?我想在fragment类中返回
View
。我之所以使用AsyncTask,是因为我必须从服务器获取文件。是否有任何错误?或者您试图实现的结果是什么?先生,为什么要在fragment类中返回视图?PagerSlidingAbstrip要求fragments返回视图。我错了吗?