繁体   English   中英

将片段提交到DialogFragment

[英]Commit fragment into DialogFragment

您好,我有向FragmentFragment提交片段的问题,我有简单的dialogFragment ...

public class CustomCalendarDialog extends DialogFragment {

    public CustomCalendarDialog() {
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Holo);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_custom_calendar, container);
        FrameLayout frame = view.findViewById(R.id.Dialogcontainer1);
        int id = frame.getId();

        FragmentManager fragmentManager = ((FragmentActivity) getActivity()).getSupportFragmentManager();
        Fragment customCalendarFragment = CustomCalendarFragment.newInstance();
        fragmentManager.beginTransaction().replace(id, customCalendarFragment );

        return view;
    }

}

并具有可通过此行提交活动的片段

Fragment customCalendarFragment = CustomCalendarFragment.newInstance();
                    FragmentManager fragmentManager = getSupportFragmentManager();
                    fragmentManager.beginTransaction().replace(frameLayout.getId(), customCalendarFragment ).commit();

在活动程序中使用此行,效果很好。

现在,我需要将此片段替换为Dialog / Dialog Fragment。

我有布局fragment_custom_calendar.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0000ff">
    <FrameLayout
        android:id="@+id/Dialogcontainer1"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>
</FrameLayout>

将布局添加到对话框中

View view = inflater.inflate(R.layout.fragment_custom_calendar, container);

变量容器为null我不知道是否可以。

查看正常,在屏幕上可以看到蓝色布局(#0000ff),但我想查看我的片段(自定义日历)

程序未在提交行上崩溃

FrameLayout frame = view.findViewById(R.id.Dialogcontainer1);
    int id = frame.getId();
    FragmentManager fragmentManager = ((FragmentActivity) getActivity()).getSupportFragmentManager();
    Fragment customCalendarFragment  = CustomCalendarFragment.newInstance();
    fragmentManager.beginTransaction().replace(id, customCalendarFragment );

框架不为空ID不为空customCalendarFragment不为空,但我看不到它。

我创建片段:

public static Fragment newInstance() {
    return (Fragment) new CustomCalendarFragment();
}

我从MainActivity调用的对话框

CustomCalendarDialog cdd = new CustomCalendarDialog();
    cdd.show(getFragmentManager(), "TAG");

我在对话框中需要这个片段:(我不知道如果在常规对话框中提交片段是否可行,请链接我,我会看一下。

谢谢任何想法

我通过类似的活动解决了类似的问题。

https://stackoverflow.com/a/18234691/8250313

    /* Start Activity */ public void onClick(View v) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setClassName("com.thinoo.ActivityTest", "com.thinoo.ActivityTest.NewActivity");
    startActivityForResult(intent,90); } /* Called when the second activity's finished */ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode) {
    case 90:
        if (resultCode == RESULT_OK) {
            Bundle res = data.getExtras();
            String result = res.getString("param_result");
            Log.d("FIRST", "result:"+result);
        }
        break;
    } }

private void finishWithResult() {
    Bundle conData = new Bundle();
    conData.putString("param_result", "Thanks Thanks");
    Intent intent = new Intent();
    intent.putExtras(conData);
    setResult(RESULT_OK, intent);
    finish(); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM