在我的主要活动布局中,我有一个图像按钮。
点击它后会弹出一个弹出窗口。弹出窗口的布局如下。
的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? 任何帮助都将非常感激。因为我很难坚持这一点。
答案 0 :(得分:0)
我建议您保存对在另一种情况下作为变量获得的片段管理器的引用,例如在您第一次启动时,并使用它。需要一些记忆,但你所处的环境不会影响你如何获得经理。