2016-02-17 38 views
-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(); 

         } 
        } 

      ); 

编辑:对不起简单的错误(忘了声明字符串);我还在学习。感谢大家的快速回复。

+9

先生,在if(input11.isChecked())块之前声明'String bigbutt;'。 –

+3

我希望那些不是你的实际变量名称 –

+1

http://www.java-made-easy.com/variable-scope.html –

回答

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(); 

          } 
         } 

       ); 
0

你可以试试这个:

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

这是一个基本的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(); 

        } 
       } 

     ); 

和字符串没有被解决的原因代码,因为你如果条件的内部定义bigbutt,给它的唯一的范围如果有条件,但是你在if条件之外使用它,这也在它的范围之外。

0

由于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(); 

       } 
      } 

    ); 
0

的问题是String变量的范围内,如果/其他块外 申报bigbutt。