【发布时间】:2017-02-26 16:31:22
【问题描述】:
在我的应用程序中,我的 main_activity 带有 FrameLayout 和 Fragment
public class Fragment1 extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
return view;
}
public class StartAsyncTask extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... voids) {
Log.e("startAsyncTask", "start");
return null;
}
}
}
我需要从MainActivity 拨打AsyncTask,
所以我用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
android.support.v4.app.FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
Fragment1 fragment1 = new Fragment1();
fragmentTransaction.replace(R.id.fragment, fragment1).commit();
new Fragment1.StartAsyncTask().execute();
}
但它不起作用。 new Fragment1.StartAsyncTask().execute(); 是红色的(不是封闭类)错误。
【问题讨论】:
-
我不明白你为什么要从活动中调用片段的异步任务,但你的问题是这是一个内部类。您可以将其更改为
public static class StartAsyncTask extends AsyncTask...,或使用静态工厂方法。 -
从片段内部调用
AsyncTask是唯一可能的方法,覆盖onViewCreated并在那里实例化你的AsnycTask -
@YoniGross 我将在 MainActivity 工具栏中使用一个 searchview,所以我需要刷新 AsyncTask 以获得 listview 结果,我希望我能解释清楚
标签: android android-fragments android-asynctask