【发布时间】:2021-01-23 00:19:30
【问题描述】:
我正在尝试从另一个 Activity 类 (e.g MyActivity.java) 的片段类 (e.g MyFragment.java) 执行 AsyncTask。
片段类 MyFragment.java 正在更新其元素的 UI:
public class MyFragment extends Fragment {
private SwipeRefreshLayout myRefreshLayout;
private ArrayAdapter myListAdapter;
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myListAdapter = new myCustomAdapter(getContext(), myDataArray);
myRefreshLayout = myView.findViewById(R.id.myRefreshLayout);
}
public class MyTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// UI...
myRefreshLayout.setRefreshing(true);
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// UI...
myRefreshLayout.setRefreshing(false);
myListAdapter.notifyDataSetChanged();
}
@Override
protected Void doInBackground(Void... params) {
// code...
return null;
}
}
}
我正在尝试从 MyActivity.java 执行 AsyncTask
MyFragment myfragment = new MyFragment();
myfragment.new MyTask.execute();
应用程序在onPreExecute崩溃:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void androidx.swiperefreshlayout.widget.SwipeRefreshLayout.setRefreshing(boolean)”。
我假设这是因为它无法访问myRefreshLayout 以对其执行setRefreshing(true),因为我正在从另一个线程MyActivity.java 运行任务
如何从 Activity 执行 Fragment 上的 AsyncTask 并更改 UI?
谢谢。
【问题讨论】:
标签: java android android-fragments android-asynctask