我怎么能有一个活动B,它会弹出并部分模糊一个父母"活动A,不断向A?
发送更新信息当然,正常的机制是将一个Intent发送回A.但是这只能在调用finish()时发生一次。
我想另一种方法是在A中有一个处理程序,让B发布到处理程序。让处理程序从A到B可以通过" global"申请会员。
有更好的方法吗?
编辑:使用DialogFragment似乎是一个很好的解决方案。但是DialogFragment存在位置问题。请参阅我的新帖子:https://stackoverflow.com/questions/30471032/position-dialogfragmet-relative-to-view
答案 0 :(得分:2)
据我所知,活动总是涵盖另一个活动。在任何时候,Android都可以回收内存并销毁活动A.
这意味着您应该以不同方式管理数据。通过您的Application实例,如果没有太多可共享的内容。
但你可能应该考虑另一个storage mechanism。您希望将哪种数据传递给活动A?你是什么意思"部分模糊"?
修改强>
我建议你的DialogFragment保留对你的Activity的引用。看看developer page。你可以尝试实现这样的东西:
在您的活动中,当您想要显示对话框时:
void showDialog() {
DialogFragment newFragment = MyAlertDialogFragment.newInstance(
R.string.alert_dialog_two_buttons_title);
newFragment.setActivity(this);
newFragment.show(getFragmentManager(), "dialog");
}
在DialogFragment类中,只需实现一个setter方法:
public static class MyAlertDialogFragment extends DialogFragment {
Activity activity;
//rest of the code here
public void setActivity(Activity a){
this.activity = a;
}
private void notifyActivity(){
int level = aMethod();
activity.somethingHappened(level);
}
}
现在,每次您想要调用Activity的方法时,请使用之前传递的引用。
我也会制作一个接口,让你的Activity实现它。像这样,您不依赖于一个特定的Activity,但它可以是任何UI组件。希望它有所帮助。