Android 材料对话赢得';第二次调用后不显示
我有一些问题需要理解,为什么这座被称为“伟大图书馆”的图书馆总的来说让我失望:Android 材料对话赢得';第二次调用后不显示,android,android-dialog,Android,Android Dialog,我有一些问题需要理解,为什么这座被称为“伟大图书馆”的图书馆总的来说让我失望: private MaterialDialog wifiDialog; @Override public void showWiFiDialog() { if (wifiDialog != null) { wifiDialog.dismiss(); wifiDialog = null; } wifiDialog = new MaterialDialog.Bu
private MaterialDialog wifiDialog;
@Override
public void showWiFiDialog() {
if (wifiDialog != null) {
wifiDialog.dismiss();
wifiDialog = null;
}
wifiDialog = new MaterialDialog.Builder(this)
.title("Please activate WiFi")
.contentColor(Color.BLACK)
.content(R.string.wifi_dialog_content)
.positiveText("Settings")
.positiveColor(Color.BLACK)
.negativeText("Exit")
.negativeColor(Color.BLACK)
.cancelable(false)
.onPositive((dialog, which) -> startActivityForResult(new Intent(ACTION_WIFI_SETTINGS), REQUEST_CHECK_SETTINGS))
.onNegative((dialog, which) -> finish())
.build();
wifiDialog.show();
}
@Override
public void hideWifiDialog() {
if (wifiDialog != null) {
wifiDialog.dismiss();
wifiDialog = null;
}
}
打电话时:
总而言之:当第一次调用show和hide时,一切都按预期进行。只要多次调用它,行为就会变得不确定。我想知道为什么?我想,您不需要每次都重新初始化
MaterialDialog
。让我们看看下面的代码是否有区别
private MaterialDialog wifiDialog;
@Override
public void showWiFiDialog() {
if (wifiDialog != null) {
wifiDialog.dismiss();
}else{
wifiDialog = new MaterialDialog.Builder(this)
.title("Please activate WiFi")
.contentColor(Color.BLACK)
.content(R.string.wifi_dialog_content)
.positiveText("Settings")
.positiveColor(Color.BLACK)
.negativeText("Exit")
.negativeColor(Color.BLACK)
.cancelable(false)
.onPositive((dialog, which) -> startActivityForResult(new Intent(ACTION_WIFI_SETTINGS), REQUEST_CHECK_SETTINGS))
.onNegative((dialog, which) -> finish())
.build();
}
wifiDialog.show();
}
@Override
public void hideWifiDialog() {
if (wifiDialog != null) {
wifiDialog.dismiss();
}
}
我以前试过这个,因为它对我来说也更符合逻辑。你是对的,我不必每次都重新初始化它,行为完全一样;也就是说,对话框是否显示完全取决于运气。