내 활동에 토글 버튼이 있습니다. 스위치가 켜지면 활성화 대화 상자가 표시되고 스위치가 꺼지면 대화 상자가 비활성화됩니다.취소 대화 상자의 토글 버튼 상태 복원
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();
}
이 비활성화 대화입니다 :
((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 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();
}
, 그것은 즉, 상태 버튼 스위치 토글 토글 후 ON 상태에 있었다라고 I 버튼을 누르면 대화 상자가 팝업되고, 취소를 누르면 ON 상태에서 OFF 상태로 바뀝니다. 예상 된 결과는 CANCEL이 눌려 졌을 때, 토글 버튼이 원래의 위치에 남아 있어야한다는 것입니다. 즉 토글이 ON이면 CANCEL을 ON으로 유지해야합니다. 이런 종류의 작업을 어떻게 성취 할 수 있습니까?
또한 아래와 같이하면 대화 상자가 모두 CANCEL을 계속 누르면 팝업됩니다.
if(((SwitchCompat)findViewById(R.id.toggle3)).isChecked()){
((SwitchCompat)findViewById(R.id.toggle3)).setChecked(false);
}else {
((SwitchCompat)findViewById(R.id.toggle3)).setChecked(true);
}
귀하의 조건이 문제를 일으키는 :
그리고 당신의 취소 콜백에
, 당신은 그런 일을 할 수 있습니다. .setChecked를 통해 프로그램 방식으로 스위치를 토글하는 코드가 호출되면 트리거됩니다. –