单击弹出按钮时,它没有显示弹出框,并强制关闭应用程序。在这里,我为我的原生android应用程序包含了我的代码(xml和java)。
popup.xml
<Button
android:id="@+id/ButtonPopup"
android:layout_marginTop="20dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonInPopup"
android:text="Dismiss this PopupWindow">
</Button>
Java代码
public void onButtonPopup (View target) {
// Make a View from our XML file
LayoutInflater inflater = (LayoutInflater)
this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.popup,(ViewGroup) findViewById(R.id.ButtonPopup));
m_pw = new PopupWindow( layout, 350, 250, true);
m_pw.showAtLocation(layout, Gravity.CENTER, 0, 0);
}
答案 0 :(得分:1)
您正在膨胀popup.xml
并将父级定义为(ViewGroup) findViewById(R.id.ButtonPopup)
。在扩充布局之前,不会创建此ViewGroup。只有在findViewById
中设置布局后,setContentView
才能生效。
尝试用这个充气 -
View layout = inflater.inflate(R.layout.popup, null);
答案 1 :(得分:0)
@babu:如果你想为你想要的布局实现自定义弹出窗口,那么使用: 它帮助了我很多,希望也能帮助你。
参见此演示:
public class ExPopup extends Activity {
Dialog myDialog;
Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myButton = (Button) findViewById(R.id.ClkBtn);
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
myDialog = new Dialog(ExPopup.this,R.style.CustomDialogTheme);
myDialog.setContentView(R.layout.mydialog);
//requestWindowFeature(Window.FEATURE_NO_TITLE);
//myDialog.setTitle("My Dialog");
myDialog.setCancelable(true);
// Button button = (Button) myDialog.findViewById(R.id.Btn1);
// button.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// myDialog.dismiss();
// }
// });
//
myDialog.show();
}
});
}
}