是否可以从android中的dialogfragment启动一个dialogfragment

时间:2016-06-15 18:52:34

标签: java android dialogfragment

我有一个场景,我想通过已打开的对话框片段中的按钮单击打开对话碎片。我希望原件要么保持打开状态,要么打开原件,或隐藏原件,然后在第二个对话框片被取消时重新打开原件。只是想知道在我尝试这样做之前这是否可行并且可能浪费我的时间。有人可以建议吗?

1 个答案:

答案 0 :(得分:0)

继上述评论后,我发现以下内容似乎有效(虽然尚未实施逻辑,但在测试手机上编译和运行)。我用以下代码替换了上面的onAttach方法。

    @Override
 public void onAttach(Context context) {
    super.onAttach(context);

    TextPropertiesDialogFragment prev = (TextPropertiesDialogFragment) getFragmentManager().findFragmentByTag("TextPropertiesDialogFragment");
    if (prev != null) {
        if (prev instanceof OnColourPickerFragmentInteractionListener) {
            mListener = (OnColourPickerFragmentInteractionListener) prev;
        } else {
            throw new RuntimeException(prev.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }
 }

作为参考,这个onAttach方法位于名为OnColourPickerDialogFragment的第二个对话框片段中。 TextPropertiesDialogFragment是从活动调用的第一个dialogfragment。为了完整性,我在下面包含了监听器和接口的定义。

public class TextPropertiesDialogFragment extends DialogFragment implements View.OnClickListener, ColourPickerDialogFragment.OnColourPickerFragmentInteractionListener{

    public void colourPickerCallBackMethod(Bundle bundle){
    //Do some work here
}
//........
}

public class ColourPickerDialogFragment extends DialogFragment implements View.OnClickListener {

private View topLevelFragmentView;
private OnColourPickerFragmentInteractionListener mListener;
private Bundle callBackBundle;

public interface OnColourPickerFragmentInteractionListener{
    void colourPickerCallBackMethod(Bundle callBackBundle);
}
//......
}