我有一个切换按钮在我的活动中。当开关打开时,显示启用对话框,开关关闭时,显示禁用对话框。
这是禁用对话框:
在两个对话框中,切换按钮会切换其状态,例如,如果切换处于“打开”状态,我按下按钮,对话框弹出,当我按下“取消”时,它会从“打开”变为“关闭”状态。期望的结果是按下“取消”后,切换按钮应该保持在原来的位置,即如果切换是打开的,则按下“取消”后它应该仍然是打开的。我应该如何实现这种操作呢?
另外,如果我像下面这样做,两个对话框将会在连续按下“取消”时不断地弹出。
((SwitchCompat) findViewById(R.id.toggleButton)).setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
((StyleableTextView) findViewById(R.id.lbl_toggle_status)).setText("on");
showEnableSharingDialog();
} else {
((StyleableTextView) findViewById(R.id.lbl_toggle_status)).setText("off");
showDiasableShareingDialog();
}
}
});
这是启用对话框:
private void showEnableShareingDialog() {
final CharSequence options[]= getResources().getStringArray(R.array.sharing_options);
AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivity.this);
builder.setTitle(getString(R.string.you_want_to_enable_prev_sigtings));
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(which==0){
mShareSigtings=true;
mEnableShareing=true;
updateSettings();
} else if(which==1){
mShareSigtings=true;
mEnableShareing=false;
updateSettings();
} else {
/*---todo---*/
dialog.cancel();
}
}
});
builder.show();
}
这是禁用对话框:
private void showDiasableShareingDialog() {
final CharSequence options[]= getResources().getStringArray(R.array.remove_sharing_options);
AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivity.this);
builder.setTitle(getString(R.string.you_want_to_remove_prev_sigtings));
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
mShareSigtings = false;
mRemovePrevSigtings = true;
updateSettings();
} else if (which == 1) {
mShareSigtings = false;
mRemovePrevSigtings = false;
updateSettings();
} else {
/*---todo---*/
dialog.cancel();
}
}
});
builder.show();
}
在两个对话框中,切换按钮会切换其状态,例如,如果切换处于“打开”状态,我按下按钮,对话框弹出,当我按下“取消”时,它会从“打开”变为“关闭”状态。期望的结果是按下“取消”后,切换按钮应该保持在原来的位置,即如果切换是打开的,则按下“取消”后它应该仍然是打开的。我应该如何实现这种操作呢?
另外,如果我像下面这样做,两个对话框将会在连续按下“取消”时不断地弹出。
if(((SwitchCompat)findViewById(R.id.toggle3)).isChecked()){
((SwitchCompat)findViewById(R.id.toggle3)).setChecked(false);
}else {
((SwitchCompat)findViewById(R.id.toggle3)).setChecked(true);
}