Android:点击按钮上的其他活动刷新/更新片段

时间:2015-11-20 06:28:29

标签: android android-fragments fragment

我在mainActivity中有一个对话框提示。如果用户关闭对话框,我需要在fourthFragment内的一个ListView项目上显示红点(根据下图中的fourthFragment中的红框)。

问题是只有在我关闭应用程序并重新打开它之后才会更新红点,因为在用户关闭对话框之前已经创建了fourthFragment。如何在Dialog关闭后刷新/更新fourthFragment,以便立即显示红点?

简短说明:

  • mainActivity:关闭对话框>将showRedDot =“1”存储到本地db
  • fourthFragment:onCreate>从本地数据库读取showRedDot,如果为“1”,则显示红点。 (问题在于,当onCreate时,showRedDot仍为“0”,因此我需要在对话框关闭后更新fourthFragment布局。)

enter image description here

2 个答案:

答案 0 :(得分:1)

您已调用界面来推送对话框的事件关闭(按钮单击)。 像这样:

public interface MyDialogListener {
    void OnCloseDialog();
}

public class fourthFragment extend Fragment implements MyDialogListener {
    public void SomeMethod() {
        MyDialog myDialog = new MyDialog(this, this);
        myDialog.show();
    }

    public void OnCloseDialog() {
        // Do update your listview in here( maybe call method initialize data for listview)
    }

}

public class MyDialog extends Dialog {
    MyDialogListener mListener;

    public MyDialog (Context context, MyDialogListener listener) {
        super(context, R.style.Dialog);
        mListener = listener;
    }

    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.CloseButton:
                // Push event when Dialog close(or anything)
                mListener.OnCloseDialog();
                dismiss()
                break;
            default:
                //...
        }
    }
}

答案 1 :(得分:1)

如上所述尝试接口或广播接收器。如果是,则将片段刷新为

    // Reload current fragment
Fragment frg = null;
frg = getSupportFragmentManager().findFragmentByTag("Your_Fragment_TAG");
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();