【问题标题】:Android "Cannot resolve symbol" for setOnCheckedChangeListener and buttonView用于 setOnCheckedChangeListener 和 buttonView 的 Android“无法解析符号”
【发布时间】:2017-11-08 20:13:08
【问题描述】:

我正在尝试创建一个开关,该开关在启用时会隐藏一个名为 button 的按钮,但它会为 SetOnCheckedChangeListener 和 buttonView 返回一个错误,上面写着 Cannot resolve symbol

package com.jordthedev.firstapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {
    int count = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }


    public void switchActivity(View v){
        startActivity(new Intent(MainActivity.this, SecondActivity.class));
    }

    ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton);
    toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                toggle.setVisibility(toggle.INVISIBLE);
            } else {
                toggle.setVisibility(toggle.VISIBLE);
            }
        }
    });

}

【问题讨论】:

  • 我认为@Override Annotation is Missing....请按照我的回答。

标签: java android togglebutton


【解决方案1】:

也许你必须在 onCreate() 方法中放置 ToggleButton 试试下面的代码

package com.jordthedev.firstapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {
    int count = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton);
        toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    toggle.setVisibility(toggle.INVISIBLE);
                } else {
                    toggle.setVisibility(toggle.VISIBLE);
                }
            }
        });
    }


    public void switchActivity(View v){
        startActivity(new Intent(MainActivity.this, SecondActivity.class));
    }



}

【讨论】:

  • 谢谢,它修复了错误,但现在我得到一个不同的错误:错误:(24、21)错误:局部变量切换是从内部类中访问的;需要声明为final
  • java内部类中使用的任何东西都需要声明为final。所以将 final 关键字放在前面,就像这样 final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton);
【解决方案2】:

用这个替换你的OnCheckedChangeListener代码

ToggleButton toggle =(ToggleButton) findViewById(R.id.toggleButton);
        toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    toggle.setVisibility(toggle.INVISIBLE);
                } else {
                    toggle.setVisibility(toggle.VISIBLE);
                }
            }
        });

【讨论】:

    猜你喜欢
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2016-06-15
    • 2017-02-09
    • 2015-12-28
    相关资源
    最近更新 更多