我想创建一个包含我在运行时构建的字符串的对话框。看起来API级别8允许您使用bundle调用showDialog,但我必须编写一个可在旧操作系统上运行的应用程序。
如何使用简单的错误字符串创建对话框,并确保在旋转屏幕时它不会死亡。
我意识到如果我重写onCreateDialog,它会为我做。问题是,这只是使int不变。我需要传递一个字符串,以便它知道在对话框中放入什么。
如果我自己构建对话框,然后在其上调用.show(),它将不会通过屏幕方向更改生效。
答案 0 :(得分:2)
如果你的目标是API Level< 8,那就太痛苦了。
代码:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save dialog message
if(dialogMessage != null) {
outState.putString(STATE_KEY_DIALOG_MESSAGE, dialogMessage);
}
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Load dialog message
if(savedInstanceState.containsKey(STATE_KEY_DIALOG_MESSAGE)) {
dialogMessage = savedInstanceState.getString(STATE_KEY_DIALOG_MESSAGE);
}
}
/** onCreateDialog as normal **/
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
switch(id) {
case DIALOG_MESSAGE:
// Decorate dialog appropriately
AlertDialog messageDialog = (AlertDialog) dialog;
messageDialog.setMessage(dialogMessage);
}
}
答案 1 :(得分:-1)
你可以在构造函数中传递字符串。
public class MyDialog extends Dialog {
public MyDialog(Context context, String msg) {
super(context);
TextView textView = new TextView(context);
textView.setText(msg);
setContentView(textView);
}
}