在 TextView 上设置文本时崩溃

Crash when setText on TextView

当我尝试生成此代码时,出现此错误:

原因: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" />

显然还有更多的代码和代码和类,但这是包含 setText 的唯一代码。

还有一个问题。如果我想在另一个 public voids 或方法中修改 TextView 的值,我应该怎么做?

感谢你们的帮助,我在那个网站上搜索了答案,但我无法解决。我不知道原因。谢谢!

为什么不尝试将文本视图设为全局变量?然后您也可以在其他功能中访问该文本字段。

像这样。

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); } }

TextView 的声明移动为 class' 属性

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) 将 return null