Сбой при setText в TextView [дублировать]

На этот вопрос уже есть ответ здесь:

когда я пытаюсь создать этот код, эта ошибка:

Вызвано: java.ленг.NullPointerException: попытка вызвать виртуальный метод ‘ void android.штучка.TextView.setText (java.ленг.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"

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.

И еще вопрос. Если я хочу изменить значение TextView в других открытых пустотах или методах, что мне делать?

Я ценю вашу помощь, ребята, я искал anwsers в этой сети, но я не могу решить его. Я не знаю причины. Спасибо!

2 ответа

  1. Почему бы вам не попробовать сделать просмотр текста глобальной переменной? Затем вы можете получить доступ к этому текстовому полю и в других функциях.

    Вроде этого.

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

  2. Перемещение объявления свойства TextViewas класса

    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, если представление не найдено в ссылочном макете.