就像标题说的那样,尝试在我的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和年)开头来命名变量.
标签:settext,android,textview 来源: https://codeday.me/bug/20191010/1886289.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。