カテゴリの数に基づいていくつかの動的UIを追加するフラグメントがあります。私は進行状況ダイアログを表示し、UIが生成されたらそれを却下する必要があります。カテゴリフェッチ処理の始めと終わりに、pd.show()とpd.hide()を呼び出しています。まだ私の進捗ダイアログは却下されていません。進行状況ダイアログがフラグメント内で破棄されない
@Override
public void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setTrackedPageName(R.string.analytics_select_service);
pd = new ProgressDialog(getContext());
pd.setIndeterminate(true);
pd.setMessage("Preparing information..");
pd.setCancelable(false);
pd.show();
}
@Override
public void onAttach(Context context)
{
super.onAttach(context);
App.from(context).inject(this);
categoriesSubscription = null;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_service_selection, container, false);
if (view != null)
{
ButterKnife.inject(this, view);
// We're recreating the view - we must be at the top of the scrollview!
isScrolledDown = false;
}
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (Categories.hasChildren(category))
{
populateWithCategories(category.getChildren());
}
else
{
categoriesSubscription = categories.list()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(Observable.empty())
.subscribe(this::populateWithCategories);
}
}
@Override
public void onDetach()
{
super.onDetach();
if (categoriesSubscription != null && !categoriesSubscription.isUnsubscribed())
{
categoriesSubscription.unsubscribe();
}
}
@Override
public String getTitle()
{
return null;
}
@Override
public float getDesiredActionBarElevation()
{
return isScrolledDown ? ActionBarModifyingContent.DEFAULT_ELEVATION : 0;
}
private void populateWithCategories(List<Category> categories)
{
for (int i = 0; i < categories.size(); i++)
{
Category category = categories.get(i);
if (Categories.isKnown(category)
&& Categories.isValid(category))
//&& Categories.hasAllowedGenders(category))
{
addService(category, i);
}
}
getActivity().runOnUiThread(new Runnable() {
public void run() {
pd.dismiss();
pd.hide();
pd.cancel();
}
});
}
どこでpd.dismissまたはpd.hideまたはpd.cancelを呼び出す必要がありますか?
は、データが表示されますか? –
はいそれは表示されています – Ackman