我有自定义alert Dialog
。在此警报对话框中,用户在edittext
中输入一些输入并关闭它。我想在其他活动中显示相同的警报对话框,其中输入值与用户在第一个活动中输入的值相同。我很困惑,如何在retaining its state
的其他活动中传递一个对话框。
截图
答案 0 :(得分:2)
单击第一个活动的警报对话框的完成按钮,将用户输入保存在共享首选项中,或者只是通过使应用程序运行时,可以使用应用程序类变量来保存特定值,方法是使该变量保持静态,并在第二个活动中使用在editText中设置该值。
使用全局变量,如下面的链接
否则您可以使用共享首选项,但我认为在应用程序运行时,您无需在手机内存中保存此类数据
使用以下链接创建共享首选项
https://www.tutorialspoint.com/android/android_shared_preferences.htm
答案 1 :(得分:1)
您的想法非常适合重复使用,因此需要创建具有自定义布局的自定义对话框类,并且您需要将show的值存储在另一个活动中,以及您使用首选项的值。
以下是自定义类:
public abstract class TempDialog extends Dialog {
private Activity activity;
public TempDialog(Context context) {
super(context);
}
public TempDialog(Context context, int themeResId) {
super(context, themeResId);
}
protected TempDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
public Activity getActivity() {
return activity;
}
public TempDialog initDialog(final Activity activity, boolean cancelble) {
this.activity = activity;
this.setCancelable(cancelble);
this.setCanceledOnTouchOutside(true);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setLayout(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
setContentView(R.layout.layout_dialog_image_selection);
final SharedPreferences sharedPreferences = getActivity().getSharedPreferences(getActivity().getPackageName(), 0);
final EditText editText = (EditText) findViewById(R.id.editText);
// Get and set Data if already store from previous activity
if (sharedPreferences.contains("keyName")) {
editText.setText(sharedPreferences.getString("keyName", ""));
}
Button btnDone = (Button) findViewById(R.id.btnDone);
btnDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// store data after click on done button
sharedPreferences.edit().putString("keyName", "" + editText.getText().toString());
}
});
return this;
}
}
//打开对话框
TempDialog tempD = new TempDialog(getActivity(), R.style.AppDialogThme);
tempD.init(this,true);
tempD.show();
答案 2 :(得分:0)
您可以将所需的所有内容保留在附加内容中,然后在下一个活动中设置对话框值