无法解析符号' setText'错误

时间:2015-02-26 13:50:11

标签: android textview 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)");

}

4 个答案:

答案 0 :(得分:2)

你有几个问题。

首先,你不能在这里做到这一点

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

由于布局尚未膨胀,因此您无法查找View findViewById() public TextView YT; 。你可以在那里宣布

setContentVie()

但您需要在> <{1>} 后初始化

@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和years)开头命名变量。

答案 1 :(得分:0)

YT = (TextView) findViewById(R.id.Years);YT.setText(years + " Year(s)");必须移至onCreate()方法

所以,离开这个

public TextView YT;

并在此处初始化:

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

    YT = (TextView) findViewById(R.id.Years);
    YT.setText(years + " Year(s)");
}

<强> [编辑]

如果您想要使用进度值进行动态更改:

@Override
public void onProgressChanged (SeekBar seekBar,int i, boolean b)
{
    //years = i;
    YT.setText(i + " Year(s)");
}

答案 2 :(得分:0)

示例XML

<TextView
    android:id="@+id/myAwesomeTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
    android:textSize="20sp" />

示例活动类

//in your OnCreate() method
TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView);
myAwesomeTextView.setText("My Awesome Text");

所以你需要添加

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

在onCreate方法

答案 3 :(得分:0)

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

语句必须写onCreate()方法。