0

少し前に、簡単なダイアログを作成しました。すべてが正常に見えますが、閉じようとした後、問題が発生しています。エラーは "void is an invalid type for the variable buttonOK"です。

うーん、スクリーンショットへのリンクを教えてあげましょう:http: //i.imgur.com/tiAiI.png

ダイアログのコード:

public void aboutApp(View view) {

    // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.aboutapp);
                dialog.setTitle("about  ");

                // set the custom dialog components - text, image and button
                TextView text = (TextView) dialog.findViewById(R.id.text);
                text.setText("bla bla bla ");
                ImageView image = (ImageView) dialog.findViewById(R.id.image);
                image.setImageResource(R.drawable.android);



                    @Override
                    public void buttonOK(View view) {
                        dialog.dismiss();
                    }


                dialog.show();
}

それを機能させるにはどうすればよいですか?

PSでpublic void buttonOK(View view)、正確にはview-でエラーが発生しました。Duplicate local variable viewたとえば、名前を変更する必要がありview2ますか?

わかりました、私は解決策を見つけました。

問題は(RidcullybuttonOK()に気づいたように)別のメソッドでメソッドを定義しaboutApp()たことでした。これはJavaでは実行できないことです(uach、今では私はそれを知っています:D)。

私は単にコードを置き換えました:@Override public void buttonOK(View view) { dialog.dismiss(); }

に:

Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new OnClickListener() {
                    public void onClick(View view2) {
                        dialog.dismiss();
                    }
                });

今それは動作します、助けのためにすべてをthx!

4

3 に答える 3

3

buttonOK()別のメソッド()内にメソッド()を定義しましたaboutApp()。これはJavaでは不可能です。コンパイラはこれを理解しようとし、それが変数として意味されていると想定しbuttonOkます。つまり、誤解を招くエラーメッセージです。

于 2012-09-27T17:18:27.827 に答える
1

ダイアログを誤って使用しています。これがあなたのための例です。

AlertDialog dialog = new AlertDialog.Builder(this).create();
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        //TODO Handle click here

    }
});

dialog.show();
于 2012-09-27T17:28:52.603 に答える
0

android:onClickで属性を使用しようとしているため、クラスで通常のメソッドとして宣言"buttonOK"する必要があります。public void buttonOK(View v) {}(現在、内部にネストしようとしてaboutApp()います。また、Javaではメソッドをネストできないことも理解してください。)

public class MyActivity extends Activity {
    Dialog dialog;

    public void onCreate(Bundle savedInstanceState) { ... }

    public void aboutApp(View view) {
        // custom dialog
        dialog = new Dialog(context);
        ...
    }

    // Move your method here:
    public void buttonOK(View v) {
        dialog.dismiss();
    }
}
于 2012-09-27T18:01:42.560 に答える