如何访问在内部 class 中创建的字符串

How to access String Created in an inner class

我对此进行了大量研究,但找不到可以实施的答案... 所以我希望你们中的一个能帮助我 :)

这是我的问题:我根据开关的设置方式创建了 String "dispo",但我不能在下面的 URL 中使用它... (我试图将 String 声明为 final 但它不起作用...

代码如下:

    Switch toto = (Switch) findViewById(R.id.toto);
    toto.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                                     boolean isChecked) {

            if(isChecked){
                String dispo = "yes";
            }else{
                String dispo = "no";
            }

        }
    });
new RequestTask().execute("http:myURL" + dispo);
}

谢谢:)

您必须将 new RequestTask().execute("http:myURL" + dispo); 移动到 onCheckedChanged 方法中。

只需在侦听器之前创建 String 'dispo'。在您的解决方案中,字符串 'dispo' 在 if/else 语句(在大括号内)中仅是 known/valid。

String dispo = null;
toto.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            dispo = "yes";
        } else {
            dispo = "no";
        }
    }
});

new RequestTask().execute("http:myURL" + dispo);

感谢大家的帮助。 我想出了一个方法来做我想做的事情^^

代码如下:

Switch toto = (Switch) findViewById(R.id.toto);
toto.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

  @Override
   public void onCheckedChanged(CompoundButton buttonView,
                                       boolean isChecked) {}
   });

    //check the current state and call the URL accordingly
    if (toto.isChecked()) {
        new RequestTask().execute("http:myURL/script.php&dispo=yes");
    } else {
        new RequestTask().execute("http:myURL/script.php&dispo=no");
    }
}