Android 为什么这个字符串无法解析?
此代码是单击listview时弹出的上下文菜单的一部分。我试图通过是否选中复选框来获得用户结果。问题是我正在创建的字符串无法解析 代码如下:Android 为什么这个字符串无法解析?,android,string,listview,contextmenu,cannot-find-symbol,Android,String,Listview,Contextmenu,Cannot Find Symbol,此代码是单击listview时弹出的上下文菜单的一部分。我试图通过是否选中复选框来获得用户结果。问题是我正在创建的字符串无法解析 代码如下: final CheckBox input11 = (CheckBox) textEntryView2.findViewById(R.id.checkBoxResult); alert2.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
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条件也在它的作用域之外
现在检查只声明变量外部条件。愚蠢的错误
最终复选框input11=(复选框)
textEntryView2.findViewById(R.id.checkBoxResult)
由于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();
}
}
);
问题在于字符串变量的范围,
在if/else块之外声明bigbutt。Sir,声明
字符串bigbutt
beforeif(input11.isChecked())
block。我希望这些不是您的实际变量名称可能与@Abe Welcome重复,您可以投票选择其他答案和接受答案。
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();
}
}
);