就像标题说我在我的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)");
}
答案 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()方法。