为什么这个字符串无法解析?

How come this string cannot be resolved?

此代码是单击列表视图时弹出的上下文菜单的一部分。我试图通过是否选中 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();

                        }
                    }

            );

编辑:抱歉简单的错误(忘记声明字符串);我还在学习。谢谢大家的快速回复。

你可以试试这个:

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

这是一个基本的 Java 问题,而不是 android 问题,只需简单地寻找答案即可。

无论如何,这是解决问题所需的代码

 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 条件之外使用它,它也在 if 条件之外它的范围。

Check now just declare variable outside condition. Silly mistake.

最终复选框输入 11 = (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();

                            }
                        }

                );

As 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 = ""; // Declaration needs here 

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

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

                }
            }

    );

问题是字符串变量的范围, 在 if/else 块外声明 bigbutt。