2012-03-07 96 views
1

我正在尝试开发一个由按钮组成的按钮,其中单击按钮可启动自定义对话框。该对话框有一个关闭它的按钮ok。我写它下面的代码,但给了我一个NullPointerException自定义对话框中的NullPointerException

Dialog modalDialog; 
@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.input); 

    Button modal = (Button)findViewById(R.id.ModalityButton); 

    modal.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      modalDialog = new Dialog(Input.this); 
      modalDialog.setContentView(R.layout.modality); 
      modalDialog.setCancelable(true); 
      Button ok = (Button) findViewById(R.id.modality_ok); 

      ok.setOnClickListener(new OnClickListener() { // shows null pointer error at this line 
       @Override 
       public void onClick(View v) { 
        modalDialog.cancel(); 
       } 
      }); 

      modalDialog.show(); 
     } 
    }); 
} 

回答

6

在对话框的布局搜索按钮ok

Button ok = (Button) modalDialog.findViewById(R.id.modality_ok); 
+0

你是什么意思?在这个布局中只有一个按钮,其id为modality_ok ... – anon 2012-03-07 14:44:50

+0

@anon现在用'findViewById()'查找当前活动布局中的'Button' ok(用'setContentView() ')。要找到对话框的布局“R.layout.modality”中的Button OK,您必须在该对话框中搜索其ID。 – Luksprog 2012-03-07 14:47:43

+0

您需要在'findViewById()'之前添加'modalDialog'。您正在搜索活动布局,而不是在对话框布局中搜索。 – WarrenFaith 2012-03-07 14:48:31