从弹出的android调用Fragment

时间:2014-02-23 13:41:56

标签: android popup preference

在我的主要活动布局中,我有一个图像按钮。

点击它后会弹出一个弹出窗口。弹出窗口的布局如下。

的test.xml

             <?xml version="1.0" encoding="utf-8"?>
             <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="100px"
                android:layout_height="wrap_content"
                android:orientation="vertical" 
                android:background="@android:color/black">

                <Button 
                    android:padding="5dp"
                    android:id="@+id/b_help"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Help"
                    android:textColor="@android:color/white"
                    android:background="@android:color/black"/>
                <Button 
                    android:padding="5dp"
                    android:id="@+id/b_pref"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Preferences"
                    android:textColor="@android:color/white"
                    android:background="@android:color/black"/>
                <Button 
                    android:padding="5dp"
                    android:id="@+id/b_about"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="About Us"
                    android:textColor="@android:color/white"
                    android:background="@android:color/black"/>   

            </LinearLayout>

弹出窗口由MainActivity.java的以下代码显示

        btnOpenPopup = (ImageButton)findViewById(R.id.menu_button);
            btnOpenPopup.setOnClickListener(new Button.OnClickListener(){

        @Override
        public void onClick(View arg0) {

             popupWindow = new PopupWindow(getBaseContext());
             popupWindow.showAsDropDown(btnOpenPopup, 50, -30);

        }});

弹出窗口类如下 PopupWindow.java

            public class PopupWindow extends android.widget.PopupWindow implements View.OnClickListener{
            Context ctx;
            View popupView;
            Button help,pref,about;

            public PopupWindow(Context context)
            {
                super(context);



                ctx = context;
                popupView = LayoutInflater.from(context).inflate(R.layout.test, null);
                setContentView(popupView);

                setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
                setWidth(WindowManager.LayoutParams.WRAP_CONTENT);

                // Closes the popup window when touch outside of it - when looses focus
                setOutsideTouchable(true);
                setFocusable(true);

                // Removes default black background
                setBackgroundDrawable(new BitmapDrawable());

                pref = (Button)popupView.findViewById(R.id.b_pref);     
                pref.setOnClickListener(this);




            }

            @Override
            public void onClick(View v) {
                switch(v.getId()){
                case R.id.b_pref:break;

                case R.id.b_help:break;
                case R.id.b_about:break;
                }

            }


        }

现在单击弹出窗口中的首选项按钮,我需要显示首选项片段。

我尝试了这个,因为setOnClickListener用于首选项按钮,但它不起作用,因为popupwindow类不能扩展fragmentactivity并且getFragmentManager()没有发生。

            FragmentManager mFragmentManager = getFragmentManager();
        FragmentTransaction mFragmentTransaction = mFragmentManager
                                .beginTransaction();
        Prefs mPrefsFragment = new Prefs();
        //this line..
        setContentView(R.layout.activity_prefs);
        mFragmentTransaction.replace(android.R.id.content, mPrefsFragment);
        mFragmentTransaction.addToBackStack(null);
        setContentView(R.layout.activity_main);
        mFragmentTransaction.commit();

如何使用弹出窗口中的按钮调用preffragment? 任何帮助都将非常感激。因为我很难坚持这一点。

1 个答案:

答案 0 :(得分:0)

我建议您保存对在另一种情况下作为变量获得的片段管理器的引用,例如在您第一次启动时,并使用它。需要一些记忆,但你所处的环境不会影响你如何获得经理。