如何解决将数据从活动传递到对话框
| 我正在寻找一种将数据从活动传递到对话框的方法。我正在尝试呼叫“ 0”,但是我看不到将任何数据传递到对话框的方法。 我需要将字符串传递给对话框以显示确认信息:) 干杯解决方法
如果您定位的是Android 2.2(API级别8或更高),则可以使用
public final boolean showDialog (int id,Bundle args)
并在arguments2ѭ中传递您的论点。请参阅文档。
如果要支持较旧的Android版本,则应将参数保存在Activity
类成员中,然后从onPrepareDialog
函数中访问它们。请注意,onCreateDialog
不能满足您的需要,因为创建对话框只调用一次。
class MyActivity {
private static int MY_DLG = 1;
private String m_dlgMsg;
private showMyDialog(String msg){
m_dlgMsg = msg;
showDialog(MY_DLG);
}
private doSomething() {
...
showMyDlg(\"some text\");
}
protected void onCreateDialog(int id){
if(id == MY_DLG){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
....
return builder.create();
}
return super.onCreateDialog(id);
}
@Override
protected void onPrepareDialog (int id,Dialog dialog){
if(id == MY_DLG){
AlertDialog adlg = (AlertDialog)dialog;
adlg.setMessage(m_dlgMsg);
} else {
super.onPrepareDialog(id,dialog);
}
}
}
,在执行showDialog(int)时,将调用Activity的onCreateDialog方法。在这里,您必须创建一个对话框实例并返回它,它将显示出来。
然后,您将创建一个对话框,您可以完全访问您的“类”字段,并且可以使用它们的值来调整所创建对话框的参数和内容。
,//`enter code here`I used shared preferences and it worked.
**in your activity:**
//your field: public static final String GAME_PREFERENCES = null;
String template = selectedItem.getProduct().getName();
String num = selectedItem.getNumber();
String id = selectedItem.getId();
String location = selectedItem.getLocationName();
SharedPreferences settings = getSharedPreferences(GAME_PREFERENCES,MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putString(\"template\",template);
prefEditor.putString(\"num\",num);
prefEditor.putString(\"id\",id);
prefEditor.putString(\"location\",location);
prefEditor.commit();
**in your dialog class:**
//In my case I needed to add activity because how i created dialog:
public MyDialog(Context context,int theme) {
super(context,theme);
init(context);
}
private void init(Context context) {
setContentView(R.layout.dialog);
this.context = context;
final Activity activity = (Activity) context;
// If you dont call activity you can try context.getpreferences(......)
SharedPreferences prefs = ((Activity) context)
.getPreferences(Context.MODE_PRIVATE);
String template = prefs.getString(\"template\",\"\");
String num = prefs.getString(\"num\",\"\");
String id = prefs.getString(\"id\",\"\");
String location = prefs.getString(\"location\",\"\");
}`enter code here`
,我知道这个问题很旧,但是如果使用自定义对话框,则可以使用setArguments
方法。
String myString = \"How to do it\"
DialogFragment newFragment = new AddUserDialog();
Bundle args = new Bundle();
args.putString(\"number\",myString); //The first parameter is the key that will be used to retrieve the value,which is the second parameter.
newFragment.setArguments(args);
newFragment.show(getSupportFragmentManager(),\"add_a_member\");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。