将属性从DialogFragment设置为MainActivity

时间:2014-02-07 05:13:03

标签: java android android-fragments android-fragmentactivity

我有一个非常基本的疑问。我有一个MainActivity,通过按钮点击,我创建了一个自定义对话框,其中有四到五个选项。单击一个值时,我想存储它(比如字符串值),以便在该对话框关闭时可以从MainActivity访问所选的选项。

为此,我使用以下方法 - 我在MainActivity中声明一些静态字符串值,我将根据用户在对话框中选择的文本值选项在对话框中设置 。例如,在MainActivity中,我声明:

public static String strval = "";

在对话框中,我使用

进行设置
MainActivity.strval = options[which];

其中options是 String array ,包含所有选项的字符串值。

有更好的方法吗?我意识到在使用多个活动创建应用程序时,以这种方式使用静态变量不是一个好习惯,但由于我在此应用程序中只有一个MainActivity,这个方法可以吗?

1 个答案:

答案 0 :(得分:1)

不建议设置特定活动的静态变量,因为这会在片段中添加依赖项。片段应该是孤立的,应该是有凝聚力的。这样任何活动都可以使用它。

更好的方法是使用DialogAction接口:

interface DialogAction{
 void onDialogAction(String option);
}

让您的活动实现此目的并编写onDialogAction

的实现
void onDialogAction(String option){
//set an instance variable
}

并在DialogFragment中声明DialogAction的对象:

private DialogAction listener;
public void setListener(DialogAction listener){
    this.listener=listener;
}

现在就行动,只需致电

listener.onDialogAction(options[which]);

不要忘记在片段中设置监听器活动。

创建新片段时的内部活动也会调用:

fragment.setListener(this);//'this' here the is a reference to the Activity implementing DialogAction