0

Androidアプリケーションにこのコードがあり、メニュー項目を押すとダイアログが表示され、正常に機能しましたが、ダイアログボックスからボタン「送信」の機能を設定すると、メニュー項目がクリックされるとクラッシュします。問題が見つかりません

 private void showdialog (String ap){
    final Dialog dialog = new Dialog(this);
    et =(EditText)dialog.findViewById (R.id.commentET);
    send=(Button)dialog.findViewById(R.id.send);
    send.setOnClickListener(sendOnClickListener);
    dialog.setTitle(ap);
    dialog.setContentView(R.layout.comment);
    System.getProperty("line.separator");
    dialog.setCancelable(true);
    dialog.show();
}

Button.OnClickListener sendOnClickListener
= new Button.OnClickListener(){



public void onClick(View arg0) {
  s=et.getText().toString();
  dialog.dismiss();
} 
};




public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.menu.aprobare_menu, menu);
   return true;
}

public boolean onOptionsItemSelected(MenuItem item) 
   {


      switch (item.getItemId())
      {
         case R.id.aproba:
             showdialog("Aprobat");
             return true;

         case R.id.respinge:
            showdialog("Respins");
             return true;

       default:
            return super.onOptionsItemSelected(item);
      }
      }    

};
4

2 に答える 2

1

setContentView を呼び出す順序を変更してみてください。

private void showdialog (String ap){
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.comment);
et =(EditText)dialog.findViewById (R.id.commentET);
send=(Button)dialog.findViewById(R.id.send);
send.setOnClickListener(sendOnClickListener);
dialog.setTitle(ap);
System.getProperty("line.separator");
dialog.setCancelable(true);
dialog.show();
}

よくわかりません。

于 2012-11-22T15:42:15.957 に答える
1

id でビューを見つけるcontentViewに、ダイアログに を設定します。

private void showdialog (String ap){
    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.comment);// should be before findViewById
    et =(EditText)dialog.findViewById (R.id.commentET);
    send=(Button)dialog.findViewById(R.id.send);
    send.setOnClickListener(sendOnClickListener);
    dialog.setTitle(ap);

    System.getProperty("line.separator");
    dialog.setCancelable(true);
    dialog.show();
}
于 2012-11-22T15:42:17.180 に答える