-2

このコードは、リストビューをクリックするとポップアップするコンテキスト メニューの一部です。CheckBox がチェックされているかどうかによって、ユーザーの結果を取得しようとしています。問題は、作成中の文字列を解決できないことです。

コードは次のとおりです。

final CheckBox input11 = (CheckBox) textEntryView2.findViewById(R.id.checkBoxResult);

            alert2.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {

                            String blazeIt = lvItems.getItemAtPosition(menuInfo.position).toString();
                            String turntupheho = blazeIt.replace(" --COMPLETE", "");
                            String evenmoreturnt = turntupheho.replace(" --INCOMPLETE", "");

                            if (input11.isChecked()) {
                                String bigbutt = " --COMPLETE";
                            } else {
                                String bigbutt = " -INCOMPLETE";
                            }

                            items.set(menuInfo.position, evenmoreturnt + bigbutt); //Cannot resolve symbol 'bigbutt'
                            itemsAdapter.notifyDataSetChanged();
                            writeItems();

                        }
                    }

            );

編集: 申し訳ありませんが単純なミス (文字列を宣言するのを忘れました)。まだ勉強してる。迅速な対応をありがとうございました。

4

5 に答える 5

0

問題は文字列変数のスコープであり、if/else ブロックの外側で bigbutt を宣言します。

于 2016-02-17T05:09:45.743 に答える
0

これを試すことができます:

String bigbutt;
if (input11.isChecked()) 
{
    bigbutt = " --COMPLETE";
} else {
    bigbutt = " -INCOMPLETE";
}
于 2016-02-17T05:01:07.393 に答える
0

これは Android の質問ではなく、基本的な Java の質問であり、答えを探す単純な努力で答えが得られます。

とにかく、問題を解決するために必要なコードは次のとおりです

 final CheckBox input11 = (CheckBox) textEntryView2.findViewById(R.id.checkBoxResult);

        alert2.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        String blazeIt = lvItems.getItemAtPosition(menuInfo.position).toString();
                        String turntupheho = blazeIt.replace(" --COMPLETE", "");
                        String evenmoreturnt = turntupheho.replace(" --INCOMPLETE", "");
                        String bigbutt="";
                        if (input11.isChecked()) {
                            bigbutt = " --COMPLETE";
                        } else {
                            bigbutt = " -INCOMPLETE";
                        }

                        items.set(menuInfo.position, evenmoreturnt + bigbutt); //Cannot resolve symbol 'bigbutt'
                        itemsAdapter.notifyDataSetChanged();
                        writeItems();

                    }
                }

        );

また、文字列が解決されない理由は、if 条件内で bigbutt を定義して、if 条件のみのスコープを与えたが、if 条件の外で使用したためです。これもそのスコープ外です。

于 2016-02-17T05:01:45.757 に答える
0

条件外で変数を宣言するだけです。愚かな間違い。

final CheckBox input11 = (CheckBox) textEntryView2.findViewById(R.id.checkBoxResult);

                alert2.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {

                                String blazeIt = lvItems.getItemAtPosition(menuInfo.position).toString();
                                String turntupheho = blazeIt.replace(" --COMPLETE", "");
                                String evenmoreturnt = turntupheho.replace(" --INCOMPLETE", "");
                                String bigbutt="";
                                if (input11.isChecked()) {
                                    bigbutt = " --COMPLETE";
                                } else {
                                    bigbutt = " -INCOMPLETE";
                                }

                                items.set(menuInfo.position, evenmoreturnt + bigbutt); //Cannot resolve symbol 'bigbutt'
                                itemsAdapter.notifyDataSetChanged();
                                writeItems();

                            }
                        }

                );
于 2016-02-17T05:01:58.690 に答える
0

ブロック内にローカル変数のスコープを持つ Java のように、if ブロックの外側で宣言する必要があります。

final CheckBox input11 = (CheckBox) textEntryView2.findViewById(R.id.checkBoxResult);

    alert2.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    String blazeIt = lvItems.getItemAtPosition(menuInfo.position).toString();
                    String turntupheho = blazeIt.replace(" --COMPLETE", "");
                    String evenmoreturnt = turntupheho.replace(" --INCOMPLETE", "");
                    String bigbutt = ""; // Declaration needs here 

                    if (input11.isChecked()) {
                         bigbutt = " --COMPLETE";
                    } else {
                         bigbutt = " -INCOMPLETE";
                    }

                    items.set(menuInfo.position, evenmoreturnt + bigbutt); //Cannot resolve symbol 'bigbutt'
                    itemsAdapter.notifyDataSetChanged();
                    writeItems();

                }
            }

    );
于 2016-02-17T05:04:45.887 に答える