当dialogfragment被解雇时刷新片段
一种方式是一个活动中嵌入您的DialogFragment并显示活动的对话,有一个在下面的链接提示,说明如何:
http://developer.android.com/guide/topics/ui/dialogs.html
您可以使用此更新基础片段,因为当对话框(这是一个活动)完成时,将在基础片段上调用onResume()。添加代码以更新onResume()方法中片段的状态,这就是它的全部。
我认为这是最好的方法,但API 8+呢?这已添加到API 11 – Iree 2015-08-03 17:12:54
我刚刚在我的项目中解决了这个问题。我拥有的是带有ListFragment的活动。在该列表片段中,当单击某个特定项目时,我会显示一个DatePickerFragment(一个显示DatePickerDialog的自定义DialogFragment)。当选择一个日期时,我想要刷新ListFragment。
为了实现这一目标,在承载ListFragment活动(它也承载DatePickerFragment,作为事实上)我实现了,简单地用一个新的实例替换ListFragment,像这样的方法:
public void criteriaChanged()
{
getFragmentManager().beginTransaction()
.replace(R.id.container, new FilterFragment())
.commit();
}
我把这种方法从DatePickerFragment,从onDateSet():
FilterActivity fa = (FilterActivity) getActivity();
fa.criteriaChanged();
这是否把戏对我来说。
您可以添加一个监听器,并覆盖您的片段对话的onDismiss:
public class DismissDialog extends DialogFragment {
private DialogInterface.OnDismissListener onDismissListener;
public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
}
}
然后,在家长,您可以设置一个监听器:
DismissDialog d = new DismissDialog();
d.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
d.show(getSupportFragmentManager(), "sometag");
这是正确的答案 – FireZenk 2015-11-18 14:28:09
我试过@Gazer答案,它不适用于我,我正在使用不同的片段类
import android.app.Fragment;
但我得到这个工作
-
在父片段创建一个接口类
public interface MyDialogListener { void OnCloseDialog(Object obj); //you can put any object here }
-
实现接口类
public class ActionBarFragment extends Fragment implements MyDialogListener{ @Override public void OnCloseDialog(Object obj) { //Do you refresh }
-
,然后我添加DialogFragment
public class SpecialDialogFragment extends DialogFragment { MyDialogListener mListener; public SpecialDialogFragment(MyDialogListener listener) { this.mListener = listener; } @Override public void onStop() { super.onStop(); if(mListener!=null) mListener.OnCloseDialog(null); }
内监听
这通知'DialogFragment'它已被解雇,但不是它的父母片段,这是问题的问题。 – howettl 2013-09-17 21:57:27
父母可以使用这些方法获取回调,并在被解雇时作出回应。查看这个用法的答案:http:// stackoverflow。com/a/29518363/445348 – cottonBallPaws 2015-12-09 21:02:44