我有一个用于在Android中显示对话框的通用类。如何将附加内容传递给此类,扩展android.app.Dialog
?
对于活动,我可以使用getIntent().getIntExtra()
。
答案 0 :(得分:1)
如何将附加内容传递给此类,扩展了android.app.Dialog
首先我想说你没有提供关于你当前实现的更多细节,所以我提到的事情是我假设你有一些返回对话框的方法(你提到你正在使用一个存储各种类的类)对话框)。
那么通过方法直接传递数据呢?
public static final Dialog getDialog(int id, String title) {
// do your stuff
}
或者您可以使用构造函数来实现目标:
public Dialog(Context context, String title, int data) {
super(context);
this.title = title;
this.data = data;
}
请注意,您可以根据需要创建任意数量的构造函数。 Dialog类只需要调用一个超级构造函数:
super(Context context);
super(Context context, int theme);
super(Context context, boolean cancelable, OnCancelListener listener);
所以,如果你打电话给其中一个,你就可以了。
答案 1 :(得分:0)
使用其他构造函数,例如:
public class MyClass extends Dialog
{
private Integer data;
public MyClass(Context context){super(c);}
public MyClass(Context context, Integer value)
{
super(c);
data = value;
}
}
然后你可以使用你班上其他地方的数据。
答案 2 :(得分:0)
以下是我将额外内容传递给对话框的方法。
创建一个静态方法,该方法将创建对话框并在包中设置额外内容。
public static final String TAG = "ExampleDialog";
private static final String BUNDLE_TITLE = "title"
...
public static ExampleDialog newInstance(String title) {
ExampleDialog dialog = new ExampleDialog();
Bundle bundle = new Bundle();
bundle.putString(BUNDLE_TITLE, title);
dialog.setArguments(bundle);
return dialog;
}
在onCreateDialog
方法中访问包中的字符串
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
final String title = bundle.getString(BUNDLE_TITLE);
...
}
创建对话框
ExampleDialog dialog = ExampleDialog.newInstance("Title of Dialog");
dialog.show(getFragmentManager(), ExampleDialog.TAG);