Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未从开关使用android局部变量_Android_Variables_Switch Statement - Fatal编程技术网

未从开关使用android局部变量

未从开关使用android局部变量,android,variables,switch-statement,Android,Variables,Switch Statement,为什么我会得到两个警告:变量“input5”未被使用,当我以后打算使用它时:“input5”无法解析为变量 我在两者之间错过了什么?谢谢 final Switch mySwitch = (Switch) findViewById(R.id.edit_home); mySwitch.setOnCheckedChangeListener(new Switch.OnCheckedChangeListener() { @Override public v

为什么我会得到两个警告:变量“input5”未被使用,当我以后打算使用它时:“input5”无法解析为变量

我在两者之间错过了什么?谢谢

    final Switch mySwitch = (Switch) findViewById(R.id.edit_home);
    mySwitch.setOnCheckedChangeListener(new Switch.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            // TODO Auto-generated method stub
            if(isChecked){
                 **double input5 = 1;**
                }else{
                 **double input5 = 2;**
                }

    Button buttonForward = (Button) findViewById(R.id.buttonToMain2);
    buttonForward.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {


    EditText edit_team = (EditText) findViewById(R.id.edit_team);
    EditText edit_form = (EditText) findViewById(R.id.edit_form);
    EditText edit_import = (EditText) findViewById(R.id.edit_import);       
    String ekipa1 = edit_team.getText().toString();

    final double input2 = Double.valueOf(ratingBar.getRating()); 
    final double input3 = Double.valueOf(edit_form.getText().toString());
    final double input4 = Double.valueOf(mplayerControl.getProgress());
    final double input6 = Double.valueOf(edit_import.getText().toString());

    Intent intent=new Intent(MainActivity.this,Main2Activity.class);
    intent.putExtra("Value",input2);
    intent.putExtra("Value1",input3);
    intent.putExtra("Value2",input4);
    intent.putExtra("Value3",**input5**);
    intent.putExtra("Value4",input6);
    intent.putExtra("team1", ekipa1);
    startActivity(intent);


            }       
    });
    }
    });     

input5
声明为实例成员

  if(isChecked){
             **double input5 = 1;**
            }else{
             **double input5 = 2;**
            }
它在if-else块中声明和初始化(输入5是if-else块的本地输入)

如果已经声明为实例成员,则初始化变量
input5

 if(isChecked){
             input5 = 1;
            }else{
             input5 = 2;
            }

变量超出范围。我认为您不需要像现在这样创建onCheckChanged侦听器。创建意图时,可以直接从按钮的onClick侦听器查询开关上的isChecked()函数。

所有变量都在一个方法中声明,这意味着只能在此方法中访问它们

因此,input2、Input3、input4和input6只能在onClick()中访问,input5只能在onCheckedChanged()中访问

试试这个:

final Switch mySwitch = (Switch) findViewById(R.id.edit_home);

final double input2 = Double.valueOf(ratingBar.getRating()); 
final double input3 = Double.valueOf(edit_form.getText().toString());
final double input4 = Double.valueOf(mplayerControl.getProgress());
final double input5 = (mySwitch.isChecked() ? 1.0 : 2.0);
final double input6 = Double.valueOf(edit_import.getText().toString());

你知道什么是变量范围吗?!!!非常感谢你!!!因为一个愚蠢的错误,我用这个开关挣扎了好几天:)@user3041073不客气。将答案标记为“接受”,如果它通过单击“嘀嗒”来帮助,考虑将类变量用作不正确的样式,如果有更多的活动实例,将导致意外的行为。如果要保存此简单组件的状态,应使用实例变量。除此之外,我不会将这个简单的状态存储在变量中,因为组件本身存储它。So-1用于使用类变量。@AlexS。如果你投了反对票,你就错了,应该撤销它。类变量是实例变量,除非将其定义为静态变量。您可以使用Raghundandan声明的
input5
创建此活动的任意多个实例,没有任何副作用。@Alex您正在争论语义问题。如果有人建议
static
,我可能会同意你的意见。事实上,提出的解决方案是一种常见模式,没有歧义或副作用。你的否决票不好。