6

每当我尝试启动我的窗口类时,我都会收到此错误。我正在使用单独的类,而不仅仅是我的游戏类中的一个方法,因为我需要禁用该弹出窗口上的后退按钮。我用一个按钮调用这个类。如果我在我的游戏类中使用此代码,但不能在单独的类中使用它,它可以正常工作。这是我的代码:

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() {

    }
}
4

1 回答 1

13

你没有调用setContentView(R.layout.myLayout)你的onCreate(Bundle)方法。之后立即调用它super.onCreate(savedInstanceState);

这是来自 Android 开发者网站上的 Activity 资源页面:

几乎所有 Activity 的子类都会实现两种方法:

onCreate(Bundle) 是您初始化活动的地方。最重要的是,在这里您通常会使用定义 UI 的布局资源调用 setContentView(int),并使用 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);
于 2013-07-22T12:12:16.587 回答