我有一个非常基本的疑问。我有一个MainActivity,通过按钮点击,我创建了一个自定义对话框,其中有四到五个选项。单击一个值时,我想存储它(比如字符串值),以便在该对话框关闭时可以从MainActivity访问所选的选项。
为此,我使用以下方法 - 我在MainActivity中声明一些静态字符串值,我将根据用户在对话框中选择的文本值选项在对话框中设置 。例如,在MainActivity中,我声明:
public static String strval = "";
在对话框中,我使用
进行设置MainActivity.strval = options[which];
其中options是 String array ,包含所有选项的字符串值。
有更好的方法吗?我意识到在使用多个活动创建应用程序时,以这种方式使用静态变量不是一个好习惯,但由于我在此应用程序中只有一个MainActivity,这个方法可以吗?
答案 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