对话框内的android片段

时间:2013-11-26 10:14:20

标签: android android-fragments

我遇到问题,我需要在fragment

中显示android.app.Dialog

这是xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@+id/marchecharts"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

</LinearLayout>

我想要的是用我的片段替换marchecharts,任何人都可以帮助

感谢

Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.marche_charts_parent);


//this is the part I think I need
Fragment fragment = new MarcheChartsFragment();
FragmentTransaction ft = ((FragmentActivity) dialog.getOwnerActivity()).getFragmentManager().beginTransaction();
ft.replace(R.id.marchecharts, fragment);  
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();

dialog.setCanceledOnTouchOutside(true);
dialog.getWindow().setLayout(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
dialog.show();

1 个答案:

答案 0 :(得分:10)

通常您直接使用DialogFragment这个名称是自我解释的。

这是我的代码示例,其中int发送为arg。

所以基本上你创建一个扩展DialogFragment的{​​{1}}。 您必须编写DialogFragmentnewInstance方法。 然后在调用片段中创建该片段的新实例。

onCreateDialog

通过执行此操作,从另一个片段调用对话框片段。 请注意,值public class YourDialogFragment extends DialogFragment { public static YourDialogFragment newInstance(int myIndex) { YourDialogFragment yourDialogFragment = new YourDialogFragment(); //example of passing args Bundle args = new Bundle(); args.putInt("anIntToSend", myIndex); yourDialogFragment.setArguments(args); return yourDialogFragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //read the int from args int myInteger = getArguments().getInt("anIntToSend"); View view = inflater.inflate(R.layout.your_layout, null); //here read the different parts of your layout i.e : //tv = (TextView) view.findViewById(R.id.yourTextView); //tv.setText("some text") return view; } } 是我发送的int。

0

在您的情况下,如果您不需要传递任何内容,请删除DialogFragment中的相应行,并且不要传递YourDialogFragment yourDialogFragment = YourDialogFragment.newInstance(0); YourDialogFragment.show(getFragmentManager().beginTransaction(), "DialogFragment");

中的任何值

修改/ FOLLOW

不确定真正理解你的问题。 如果您只需要用另一个片段替换片段,请使用

YourDialogFragment.newInstance()