在TextView上使用setText时崩溃

时间:2016-09-28 20:12:10

标签: android textview settext

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

引起: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的值,我该怎么办?

我感谢你们的帮助,我在网上搜索了一些东西,但我无法解决。我不知道原因。谢谢!

2 个答案:

答案 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