【发布时间】:2014-12-13 11:24:07
【问题描述】:
我一直在使用这种模式。这是一个非常人为的 AsyncTask + 进度指示器示例:
new AsyncTask<Void, Void, Void>() {
WeakReference<MyFragment> weakFragment = new WeakReference<MyFragment>(MyFragment.this);
@Override
protected void onPreExecute() {
Fragment fragment = weakFragment.get();
if(fragment != null) fragment.getView().findViewById(R.id.progress).setVisibility(View.VISIBLE);
}
@Override
protected Document doInBackground(Void... params) {
Fragment fragment = weakFragment.get();
if(fragment == null) return null;
// Do something ...
}
@Override
protected void onPostExecute() {
Fragment fragment = weakFragment.get();
if(fragment != null) fragment.getView().findViewById(R.id.progress).setVisibility(View.GONE);
}
}.execute();
它适用于方向更改,但是当我从后台堆栈中弹出片段时,我注意到片段是非空的并且 fragment.getView() 是空的。这显然会导致崩溃。你们用的是什么方法?我似乎无法在网上找到完美的解决方案。重要说明,这是在一个片段中,我在其 onActivityCreated(...) 中对该片段调用 setRetainInstance(true);。
【问题讨论】:
-
使用消息总线或本地广播接收器。
-
进度条? :|你不觉得这有点多吗?
标签: android android-fragments android-asynctask progress-bar