为Dialog添加额外内容

时间:2013-11-25 14:01:26

标签: java android android-dialog

我有一个用于在Android中显示对话框的通用类。如何将附加内容传递给此类,扩展android.app.Dialog

对于活动,我可以使用getIntent().getIntExtra()

3 个答案:

答案 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)

以下是我将额外内容传递给对话框的方法。

  1. 创建一个静态方法,该方法将创建对话框并在包中设置额外内容。

    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;
    }
    
  2. onCreateDialog方法中访问包中的字符串

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Bundle bundle = this.getArguments();
        final String title = bundle.getString(BUNDLE_TITLE);
        ...
    }
    
  3. 创建对话框

    ExampleDialog dialog = ExampleDialog.newInstance("Title of Dialog");
    dialog.show(getFragmentManager(), ExampleDialog.TAG);