在dialogFragment解除时刷新片段

时间:2013-06-27 07:20:53

标签: android fragment android-dialogfragment

在我的应用程序中,我的Fragment AppointmentFrag包含一个从数据库加载数据的customListView 在listView的itemClickListener上,我打开一个DialogFrament

这是我的itemClick方法

@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) 
{
    RowItem listRow = (RowItem)listview.getItemAtPosition(position);
    String date=dateString;
    String time=listRow.gettime();
    arguments.putString("date", date);
    arguments.putString("time", time);
    SherlockDialogFragment fragment = (SherlockDialogFragment)  Fragment.instantiate(appContext, SdleCrte.class.getName(),arguments);
    fragment.show(getFragmentManager(), "create");
}

我的DialogFragment是SdleCrte.class

我需要在dialogFragment上做一些操作,即我在数据库中向我的表添加一个新项。当我点击肯定按钮时,对话框将被忽略,需要在listViewment中包含的listView中显示新项目 我覆盖了我的AppointmentFrag中的onResume并编写了用于从数据库中重新收集数据的代码,但我在AppointmentFrag中编写的onResume函数没有调用

当Dialog关闭时我们如何刷新listView。或者我们如何识别我的dialogFrag被解雇并运行部分代码。

2 个答案:

答案 0 :(得分:1)

我的回答可能有点迟,但在你的DialogFragment

@Override
public void onDismiss(DialogInterface frag) {
    super.onDismiss(frag);
    // DO Something
}

您可以使用Activity

(MyActivityClassName)getActivity().myMethod();中调用方法

答案 1 :(得分:0)

我能够做到,请查看https://stackoverflow.com/a/48123149/3922705

import android.app.Fragment; 

但我得到了这个工作

  1. 创建接口类

    public interface MyDialogListener {
        void OnCloseDialog(Object obj); //you can put any object here
    }
    
  2. 在Parent Fragment

    中实现接口类
    public class ActionBarFragment extends Fragment implements MyDialogListener{
    
        @Override
        public void OnCloseDialog(Object obj) {
            //Do you refresh
        }
    
  3. 然后我在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);
        }