每当我尝试启动窗口类时,都会收到此错误。我正在使用单独的类,而不仅仅是我的游戏类中的一个方法,因为我需要在该弹出窗口中禁用后退按钮。我用一个按钮叫这个班。如果我在我的游戏类中使用它,这个代码工作正常,但不是在单独的类中。这是我的代码:
public class Popup_pogresno extends Activity implements OnClickListener{
private PopupWindow pwindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
LayoutInflater layoutInflater
= (LayoutInflater)Popup_pogresno.this
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.popup, null);
pwindow = new PopupWindow(popupView, 300, 170, true);
Button btnDismiss = (Button)popupView.findViewById(R.id.bPopupOK);
btnDismiss.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
pwindow.dismiss();
}});
pwindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);
}
public void onClick(View v) {
// TODO Auto-generated method stub
}
@Override
public void onBackPressed() {
}
}
答案 0 :(得分:13)
您未在setContentView(R.layout.myLayout)
方法中致电onCreate(Bundle)
。在super.onCreate(savedInstanceState);
之后立即调用。
这是来自Android开发者网站上的“活动资源”页面:
Activity几乎所有子类都有两种方法 实现:
onCreate(Bundle)是初始化活动的地方。最重要的是,在这里你通常会用a调用setContentView(int) 布局资源定义您的UI,并使用findViewById(int)来 检索该UI中需要与之交互的小部件 编程。
onPause()是您处理离开活动的用户的地方。最重要的是,此时用户所做的任何更改都应该是 已提交(通常是持有数据的ContentProvider)。
修改1:
替换:
pwindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);
使用:
new Handler().postDelayed(new Runnable(){
public void run() {
pwindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);
}
}, 100L);