android-无法解决符号“ setText”错误

就像标题说的那样,尝试在我的android项目中设置来自Java的文本视图文本时出现错误,我看不到原因.

    package com.codeherenow.sicalculator;

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    import android.widget.SeekBar;

    public class SICalculatorActivity extends Activity implements SeekBar.OnSeekBarChangeListener{
public double years;
public TextView YT = (TextView) findViewById(R.id.Years);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sicalculator);
}
    @Override
    public void onProgressChanged (SeekBar seekBar,int i, boolean b){
        years = i;
    }

    @Override
    public void onStartTrackingTouch (SeekBar seekBar){

    }

    @Override
    public void onStopTrackingTouch (SeekBar seekBar){

    }
YT.setText(years + " Year(s)");

}

解决方法:

你有几个问题.

首先,您不能在这里这样做

public TextView YT = (TextView) findViewById(R.id.Years);

因为布局尚未膨胀,所以无法通过findViewById()查找视图.您可以在那里声明

public TextView YT;

但是您需要在调用setContentVie()之后对其进行初始化

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

    //can't do it before that line ^
    YT = (TextView) findViewById(R.id.Years);
}

您正在尝试在方法外部调用setText().将其移动到某种方法.但是您无法在onCreate()中执行此操作,因为Years没有给出值.因此,您可能希望在其他地方使用它.也许在onProgressChanged()中.

另外,要遵循Java命名约定,您应该以小写字母(yt或yT和年)开头来命名变量.

上一篇:Leetcode Task16:完成237、238、292题目并打卡


下一篇:java – Expandablelistview中的奇怪行为 – Android