Android - 解除DialogFragment时刷新"父"片段

tyb*_*tyb 3 android android-fragments

我正在使用Tabhost和Fragments构建一个带有标签布局的Android应用程序.

在其中一个选项卡(片段)中,我有一个textview,显示String变量的值.这个选项卡还有一个调用DialogFragment的按钮,我可以通过EditText框编辑所述字符串的值.

这一切都按预期工作,除了一个小故障:一旦DialogFragment被解除并且选项卡再次获得焦点,textview文本不会自动刷新.要刷新它我需要更改选项卡并返回.

是否有可以添加的指令,以便在DialogFragment被解除时,其父活动被重新加载/刷新?

提前致谢.

编辑:仍在寻找解决方案,无法弄清楚如何使用DialogFragment.isdetached

ste*_*ker 9

要设置关键字,可以通过Handler机制完成.

我遇到了类似的情况,显示了一个Fragment中的DialogFragment,其中DialogFragment应该向Fragment报告它的'dismiss.

在你的情况下,你似乎使用(片段)活动而不是片段,但我认为这没有区别.

脚步

  1. 在Activity中创建一个扩展Handler的私有类.覆盖onHandleMessage(),并在那里刷新TextView.
  2. 将YourDialogFragmentDismissHandler的实例传递给YourDialogFragment,例如通过构造函数
  3. 覆盖YourDialogFragment中的onDismiss(),并以最简单的方式通过YourDialogFragmentDismissHandler实例发送一条消息.

public class YourActivity extends Activity {
    ...
    public void someMethod() {
        ...
        YourDialoagFragment yourDialoagFragment = 
            new YourDialoagFragment(new YourDialogFragmentDismissHandler());
        yourDialoagFragment.show();
        ...
    }

    private class YourDialogFragmentDismissHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            // refresh your textview's here
        }   
    }
    ...
}


public class YourDialoagFragment extends DialoagFragment {
    ...
    Handler handler;

    public YourDialoagFragment(Handler handler) {
        this.handler = handler
    }
    ...
    @Override
    public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);

        handler.sendEmptyMessage(0);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!