Android 带有首选项的警报对话框
我正在做一个改变背景颜色的应用程序,但我现在想做的是使用alertDialog,我的问题是,当我改变屏幕时,它没有保存上次的更改,它再次出现alertDialog。我正在使用这个,但我不知道我是否做得正确。。。我使用getPreferences是因为我需要获取我的活动默认SharedReferencesAndroid 带有首选项的警报对话框,android,Android,我正在做一个改变背景颜色的应用程序,但我现在想做的是使用alertDialog,我的问题是,当我改变屏幕时,它没有保存上次的更改,它再次出现alertDialog。我正在使用这个,但我不知道我是否做得正确。。。我使用getPreferences是因为我需要获取我的活动默认SharedReferences // SharedPreferences preferences = getPreferences(MODE_PRIVATE); // int storedPrefe
// SharedPreferences preferences = getPreferences(MODE_PRIVATE);
// int storedPreference = preferences.getInt("storedInt", 0);
// SharedPreferences.Editor editor = preferences.edit();
// editor.putInt("storedInt", storedPreference);
// editor.commit();
new AlertDialog.Builder(this)
.setTitle("Alert Dialog")
.setMessage("Startup Button Visibility:")
.setPositiveButton("Hidden", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if(buttonVisible == true)
{
myLayout2.setVisibility(View.INVISIBLE);
}
else
myLayout2.setVisibility(View.VISIBLE);
// Toast.makeText(getApplicationContext(), "Hidden was clicked", Toast.LENGTH_LONG).show();
// // continue with delete
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setNeutralButton("Visible", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
/**
* Showing alert dialog
*/
.show();
根据你对问题的评论。看起来您希望保留活动的状态,即使您更改了活动的方向。将其添加到活动括号内的清单中
android:configChanges="orientation|screenSize"
更改方向会重新创建活动。问题在于每次调用创建时更改方向,但可以通过在活动标记的AndroidManifest文件中添加活动的configChanges属性来避免重新创建活动
android:configChanges=keyboardHidden | orientation当发生以下事件后更改屏幕方向时 ==方向改变=== onSaveInstanceState->onPause->onStop->onCreate->onStart->onRestoreInstanceState->onResume 因此,当您想要保存状态时,可以使用onSaveInstanceState。通常在onCreate中恢复状态 为了恢复这一点:
public void onCreate(Bundle icicle) {
if (icicle != null){
value = icicle.getString("param");
}
}
因此,您可以保存颜色值或任何您想要的内容,并在onCreate中还原这些内容,并设置为您的AlertDialog。您到底想要什么?为什么你第一次隐藏并在没有任何改变的情况下再次设置?我已经做了一个应用程序,在你按下按钮后改变背景颜色,点击屏幕也可以显示和消失按钮,现在我使用alertDialog启动可见模式,隐藏按钮或取消,但我的问题出现在我按下后,例如:隐藏,它工作,但如果我更改方向,alertDialog将再次出现:/如果您更改设备的方向,您将再次重新创建活动。您可以使用一个变量来说明对话框是否以您想要的方式结束,并使用onsaveInstanceState保存该变量,然后在onRestoreInstance中恢复该变量,或者使用Bundle类在onCreate中恢复该变量,前提是您的变量已在Bundle中使用先前定义的值进行了定义,那么你就不会显示对话框了。你看过对话框片段了吗?这就是使用对话框的方法。构建对话框需要做更多的工作,但可以为布局更改节省一些麻烦。看,是的,这就是我想要做的,但我需要在SaveInstance上使用,问题是什么?你看到任何错误了吗?没有,没有错误,只是当我更改方向时,alertdialog再次出现,这是我的问题。更改方向时你想要什么?在我选择了一个选项(例如:隐藏按钮)后,如果我更改方向,它假定不必再次出现alertdialog,这个窗口必须在我启动应用程序时出现,每次我旋转它都会显示这个窗口让我们
public void onCreate(Bundle icicle) {
if (icicle != null){
value = icicle.getString("param");
}
}