【问题标题】:Cannot resolve this symbol for an Object无法为对象解析此符号
【发布时间】:2018-06-30 13:29:20
【问题描述】:

在 OnCreate() 中创建对象 RadioGroup 时,稍后在另一个函数中调用此对象时,会显示错误“无法解析此符号”

这里是java代码 MainActivity.java

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RadioGroup group1 = (RadioGroup)findViewById(R.id.que1_rG);
        RadioGroup group2 = (RadioGroup)findViewById(R.id.que2rG);
        RadioGroup group3 = (RadioGroup)findViewById(R.id.que3rG);
        RadioGroup group4 = (RadioGroup)findViewById(R.id.que4rG);
        RadioGroup group5 = (RadioGroup)findViewById(R.id.que5rG);
        RadioGroup group6 = (RadioGroup)findViewById(R.id.que6rG);
        RadioGroup group7 = (RadioGroup)findViewById(R.id.que7rG);
        RadioGroup group8 = (RadioGroup)findViewById(R.id.que8rG);
        RadioGroup group9 = (RadioGroup)findViewById(R.id.que9rG);
        RadioGroup group10 = (RadioGroup)findViewById(R.id.que10rG);
    }

    public void submitButton(View view)
    {
        int checkedRadio1= group1.getCheckedRadioButtonId();
        Toast.makeText(this,"Score is : " + score,Toast.LENGTH_SHORT);
        Log.v("MainActivity","Score is  " + score);
        score = 0;
    }

【问题讨论】:

    标签: java android xml android-radiogroup


    【解决方案1】:

    你得到无法解析符号的原因是你没有在班级级别声明你的RadioGroup group1。由于您已在onCreate 中声明和分配,因此其范围仅限于onCreate()。要在其他方法中访问,请将其作为类成员。

    如下声明RadioGroup group1为类成员:

    public class MainAcivity extends Activity{
        private RadioGroup group1;
        //Declare other RadioGroup group2,group3...group 10. if you intend
        //to access them outside of onCreate()
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            group1 = (RadioGroup)findViewById(R.id.que1_rG);
            ...
        }
          public void submitButton(View view) {
            int checkedRadio1= group1.getCheckedRadioButtonId();
            Toast.makeText(this,"Score is : " + score,Toast.LENGTH_SHORT).show();
            Log.v("MainActivity","Score is  " + score);
            score = 0;
        }
    }
    

    注意: 同样的事情也适用于您想在onCreate() 之外访问的任何其他RadioGroup

    在尝试显示 Toast 时,您还缺少对 show() 方法的调用。如果不调用show(),则不会显示 Toast 消息。

    代替

    Toast.makeText(this,"Score is : " + score,Toast.LENGTH_SHORT)

    使用

    Toast.makeText(this,"Score is : " + score,Toast.LENGTH_SHORT).show()

    【讨论】:

    • 感谢您提供额外的建议,我完全忘记了 show(),因此我使用 Log.v() 来查看结果,我一直想知道为什么它不起作用。谢谢
    • @VedantTripathi 没问题。享受编码 :-) 如果有帮助,请记住将答案标记为已接受
    【解决方案2】:

    在类级别声明单选组按钮。您在函数级别使用 veriable,因此您不能在函数之外使用该变量。

       private RadioGroup group1, group2, group3, group4, group5, group6, group7,group8,group9,group10;     
    
        @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
                     group1 = (RadioGroup)findViewById(R.id.que1_rG);
                     group2 = (RadioGroup)findViewById(R.id.que2rG);
                     group3 = (RadioGroup)findViewById(R.id.que3rG);
                     group4 = (RadioGroup)findViewById(R.id.que4rG);
                     group5 = (RadioGroup)findViewById(R.id.que5rG);
                     group6 = (RadioGroup)findViewById(R.id.que6rG);
                     group7 = (RadioGroup)findViewById(R.id.que7rG);
                     group8 = (RadioGroup)findViewById(R.id.que8rG);
                     group9 = (RadioGroup)findViewById(R.id.que9rG);
                     group10 = (RadioGroup)findViewById(R.id.que10rG);
                }
    
                public void submitButton(View view)
                {
                    int checkedRadio1= group1.getCheckedRadioButtonId();
                    Toast.makeText(this,"Score is : " + score,Toast.LENGTH_SHORT);
                    Log.v("MainActivity","Score is  " + score);
                    score = 0;
                }
    

    【讨论】:

    • 谢谢,看到解决方案后我是个白痴,我去写了代码,而我本来可以从你那里复制过来的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多