私のアプリのレイアウトにはTextViewとトグルボタンが含まれています。トグルボタンがオンになるとAlertDialogが表示され、カウントダウンの開始時刻を入力するようユーザーに求められます。カウントダウン中に向きを変えないとうまくいきます。しかし、カウントダウンが継続している間に向きを変えると、ダイアログボックスが再表示されます。私はオリエンテーションを変えることで私の活動が破壊されて再現されることを知っています。トグルボタンがオンになっていて、アクティビティが再作成されると破壊される前にオンになっていなければなりません。だから私の質問は、AlertDialogが方向変更後に表示されないようにする方法がある場合です。カウントダウンタイマーアプリにオリエンテーションを変更すると問題が発生する
私は次を追加しようとしているが、それは がクラスとして宣言された変数
それは を破壊される前の状態を保存し、真protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate: created.............");
mTextTime = (TextView) findViewById(R.id.textView);
mToggleButton = (ToggleButton) findViewById(R.id.toggleButton);
if((savedInstanceState != null) && TOGGLE_BUTTON_STATE.equals("ON")) {
Log.d(TAG, "onCreate: created after changing orientation........");
mToggleButton.setChecked(true);
}
mToggleButton.setOnCheckedChangeListener(this);
にトグルボタンを設定しようと
public static final String TOGGLE_BUTTON_STATE = "OFF";
仕事didntは
@Override
public void onSaveInstanceState(Bundle outState) {
if(mToggleButton.isChecked()) {
Log.d(TAG, "onSaveInstanceState: toggleButton is checked...........****");
outState.putString(TOGGLE_BUTTON_STATE, "ON");
}else {
Log.d(TAG, "onSaveInstanceState: toggleButton is not checked...........*****");
outState.putString(TOGGLE_BUTTON_STATE, "OFF");
}
super.onSaveInstanceState(outState);
}
カウントダウンタイマーも姿勢変更後に正常に動作して続けの//Listener for the ToggleButton
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// Toast.makeText(this, "ON", Toast.LENGTH_SHORT).show();
// TOGGLE_BUTTON_ON = true;
//getting the xml user_input to java
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.user_input, null);
//search inside the view for the text_input
mTextUserInput = (EditText) view.findViewById(R.id.text_input);
//We create the builder and we use it to add functionality to the dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Please Enter The Time");
//We create the user_input that has only the editext widget that we gonna use to get the
//time from the user
builder.setView(view);
builder.setPositiveButton("OK", this);
builder.setNegativeButton("Cancel", this);
builder.show();
} else {
// OFF selected and timer must stop
// TOGGLE_BUTTON_ON = false;
timer.stop();
}
}
PS
は、あなたが質問を編集して、警告ダイアログのコードを貼り付けることはできますか? – fernandospr
質問が編集されました – Giannis
画面の向きを変更するとアクティビティが破壊されないようにすることができます –