-1

ユーザーがボタンを押したときにポップアップするダイアログ ボックスを実装しようとしています。これは現在機能していますが、ポップアップに含めたボタンが反応しません。問題を解決するために、次のコードを試しました。

public void showDialog()
{
    final Dialog dialog= new Dialog(context);
    dialog.setContentView(R.layout.dialog_info);

    infoView=(EditText) dialog.findViewById(R.id.infoView);
    infoView.setFocusable(false);
    infoView.setText("");

    dialog.setTitle(aList.get(count).toTitle());
    infoView.append(aList.get(count).toDescription());


    Button back=(Button)findViewById(R.id.back);
    Button reminder=(Button)findViewById(R.id.reminder);


    Log.e(TAG,"Testing click 1.5");

   back.setOnClickListener(new OnClickListener()
    {
       @Override
        public void onClick(View v)
        {
            Log.e(TAG,"Testing click 2");
            dialog.dismiss();
        }
    });
   dialog.show();
}

showDialog() は、最初のビューのボタン (戻る) が押された後に呼び出されます

    public void onClick(View v) {

    for (count =0;count<aList.size();count++)
        {
        if (v==buttons.get(count))
            {
             Log.e(TAG,"Testing click -1.1");
            showDialog();

            }
        }

} 
4

2 に答える 2

0

私が間違って理解していたら、私を訂正してください、

ボタンの戻るとリマインダーはダイアログの一部であるため、null ポインター例外が発生するはずです。このようなボタンを見つけてみてください

 Button back=(Button)dialog.findViewById(R.id.back);
 Button reminder=(Button)dialog.findViewById(R.id.reminder);

編集:これを行うと、ダイアログ内にボタンが表示されます。これを行わないと、Android は dialog ではなく Activity 自体でボタンを見つけようとします。

オーバーライドの問題については、正しいインポートを行ったことを再確認してください。(View.onClickListner には 2 種類のインポートがあり、その名前は今は覚えていません。) View.Onclick に関連付けられているインポートを削除して、正しいパッケージを再インポートしてみてください。

そうでない場合は、あなたの質問を誤解している可能性があります。Java コンプライアンス レベルをチェックして、1.6 であるかどうかを確認できます。これは、Java コンプライアンス レベルの下のプロジェクト プロパティに移動することで確認できます。

于 2013-03-28T17:24:29.797 に答える
0

Java のどのバージョンを使用していますか?

プロジェクトを右クリック プロパティに移動 Java コンパイラに移動 プロジェクト固有の設定を有効にする Java 準拠レベルに 1.6 を選択

これにより、@Override エラーが修正されます。別のバージョンを使用する場合は、すべての @Override アノテーションを削除するだけです。

于 2013-03-28T17:24:44.017 に答える