[英]android dialog call dismiss but is not dismiss
我的Android应用程序编码存在如下问题:我使用dismiss()
来隐藏对话框,但是对话框并没有按预期消失。 在实际调用dismiss()时,对话框保留在活动界面中。
感觉就像被卡住了或其他。 硬件后退按钮也不起作用。 应用只是卡在那里。 谁能帮我一下,谢谢。
@Override public void editAllNum(Context context, int num, List<ShopCar.GoodListBean> goodList) { Subscription s = Observable.just(num) .filter(integer -> goodList.size() != 0) //the goodList of size is never equal to 0. .subscribeOn(Schedulers.io()) .compose(TransformerUtil.showLoadingDialog(mView)) //call show dialog. .flatMap(new Func1<Integer, Observable<List<ShopCar.GoodListBean>>>() { @Override public Observable<List<ShopCar.GoodListBean>> call(Integer num) { List<ShopCar.GoodListBean> list = new ArrayList<ShopCar.GoodListBean>(); for ( ShopCar.GoodListBean item : goodList ) { if ( item.getRemainNum() != 0 ) { if ( item.getRemainNum() > num ) { if ( item.getLimit() != 0 ) { item = editNum(item, num); //editNum is not important } else { item.setNum(num); } } else { if ( item.getLimit() != 0 ) { item = editNum(item, num); } else { item.setNum(item.getRemainNum()); } } } list.add(item); } return Observable.just(list); } }) .flatMap(new Func1<List<ShopCar.GoodListBean>, Observable<List<ShopCar.GoodListBean>>>() { @Override public Observable<List<ShopCar.GoodListBean>> call(List<ShopCar.GoodListBean> temp) { return mPaymentImpl.updateGoodsNumAndQuery(context, temp); //operate databases update some data. } }) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<List<ShopCar.GoodListBean>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { mView.dismissLoadingDialog(); } @Override public void onNext(List<ShopCar.GoodListBean> list) { mView.dismissLoadingDialog();// call dismiss dialog. mView.setShopCarFromDB(list); } }); addSubscription(s); }
@Override public void showLoadingDialog() { if ( mLoadingDialog == null ) { mLoadingDialog = new LoadingDialog(getContext()); LogUtils.e(" show loading dialog = " + mLoadingDialog); } mLoadingDialog.show(); } @Override public void dismissLoadingDialog() { if ( mLoadingDialog != null ) { LogUtils.e(" dismiss loading dialog "); mLoadingDialog.dismiss(); } }
对话框的一些代码。
public class LoadingDialog extends Dialog { public LoadingDialog(Context context) { super(context, android.R.style.Theme_Translucent); } @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.widget_loading_dialog); setCanceledOnTouchOutside(true); setCancelable(true); } } //XML <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="@drawable/loading_dialog_bg" > <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </RelativeLayout> </RelativeLayout>
最后,对不起我的英语。
首先检查mLoadingDialog的值是否为null。 也许值是空的。 即。 您在屏幕上看到的对话框可能不是mLoadingDialog。 通过更改以下功能,您在logcat中看到了什么?
@Override
public void dismissLoadingDialog() {
if ( mLoadingDialog != null ) {
LogUtils.e(" dismiss loading dialog ");
mLoadingDialog.dismiss();
}else{
LogUtils.e("mLoadingDialog is null skip dismiss loading dialog ");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.