当我尝试生成此代码时,出现此错误:
引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.widget.TextView.setText(java.lang.CharSequence)'。
那是我的代码:
public class MainActivity extends AppCompatActivity implements View.OnTouchListener{
private Tablero fondo;
int x;
int y;
private boolean activo = true;
int intento = 10;
String numerointentos;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1);
TextView Tiradas = (TextView) findViewById(R.id.Intentos) ;
numerointentos = Integer.toString(intento);
Tiradas.setText(numerointentos);
fondo = new Tablero(this);
fondo.setOnTouchListener(this);
linearLayout1.addView(fondo);
fondo.casillas = new Casilla[8][8];
for (int f = 0; f < 8; f++){
for (int c = 0; c < 8; c++){
fondo.casillas[f][c] = new Casilla();
}
}
这是.xml代码:
<?xml version= "1.01" encoding="utf-8"?>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width= "fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:weightSum="1">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reiniciar"
android:id="@+id/btnReiniciar"
android:onClick="presionado"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/Intentos"
android:layout_gravity="center_horizontal" />
显然有更多的代码和代码以及clases,但这是包含setText的唯一代码。
另一个问题。如果我想在另一个公共空间或方法中修改TextView的值,我该怎么办?
我感谢你们的帮助,我在网上搜索了一些东西,但我无法解决。我不知道原因。谢谢!
答案 0 :(得分:0)
为什么不尝试将文本视图作为全局变量?然后,您也可以访问其他功能中的文本字段。
喜欢这个。
public class MainActivity extends AppCompatActivity
{
TextView Tiradas;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManAger.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1);
Tiradas = (TextView) findViewById(R.id.Intentos) ;
numerointentos = Integer.toString(intento);
Tiradas.setText(numerointentos);
fondo = new Tablero(this);
}
}
答案 1 :(得分:0)
将TextView
的声明移动为类'属性
public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
public TextView Tiradas;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView( ... );
Tiradas = (TextView) findViewById(R.id.Intentos);
Tiradas.setText(numerointentos);
}
}
修改强>
确保您没有activity_main.xml
文件的其他变体(例如横向或更大的屏幕尺寸)。如果有,请将缺少的视图添加到该布局文件中。
如果在引用的布局中找不到视图,findViewById(int)将返回null
。