对话框内的android片段

前端之家收集整理的这篇文章主要介绍了对话框内的android片段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,我需要在 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();

解决方法

通常你直接使用 DialogFragment这个名字是自我解释的.

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

所以基本上你创建了一个扩展DialogFragment的DialogFragment.
您必须编写newInstance和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;
    }
}

通过执行此操作,从另一个片段调用对话框片段.
请注意,值0是我发送的int.

YourDialogFragment yourDialogFragment = YourDialogFragment.newInstance(0);
YourDialogFragment.show(getFragmentManager().beginTransaction(),"DialogFragment");

在您的情况下,如果您不需要传递任何内容,请删除DialogFragment中的相应行,并且不要在YourDialogFragment.newInstance()中传递任何值

编辑/ FOLLOW

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

getFragmentManager().beginTransaction().replace(R.id.your_fragment_container,new YourFragment()).commit();

猜你在找的Android相关文章