Android Intent Error (Отключается при нажатии кнопки) [дублировать]

4 ответа

Проблема заключается в этих строках.

final TextView mShowCounter = (TextView) findViewById(R.id.text_view_counter);
final Button button = (Button) findViewById(R.id.toast_button);

Ваше приложение выходит из строя, потому что во время фазы инициализации класса представления еще не существуют. findViewById не будет работать.

Вместо этого вы должны перемещать эти строки внутри onCreate.

1
ответ дан christopher_pk 15 August 2018 в 20:49
поделиться

Вы пытаетесь получить доступ к экземплярам **xml** до того, как они будут созданы, что приводит к сбою приложения.

Чтобы проверить вызванное из-за вашего приложения повреждение, вы можете обратиться к флажку Logcat в свою IDE .

Поместите код создания внутри onCreate() обратного вызова: -

package com.example.android.testapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

final TextView mShowCounter;
final Button button;
private int mCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mShowCounter = (TextView) findViewById(R.id.text_view_counter);
    button = (Button) findViewById(R.id.toast_button);
}


public void showToast(View view) {
    Toast toast = Toast.makeText(this, 
R.string.toast_popup,Toast.LENGTH_LONG);
    toast.show();
}

public void counterUp(View view) {
    mCount++;
    if(mShowCounter != null) {
        mShowCounter.setText(Integer.toString(mCount));
    }
}
}
1
ответ дан Mr. Roshan 15 August 2018 в 20:49
поделиться
  • 1
    Большое вам спасибо @MrRoshan за помощь в этом вопросе! – Aqib Ahmed 6 July 2018 в 04:03
  • 2
    Добро пожаловать, босс. !! – Mr. Roshan 6 July 2018 в 04:05

Инициализация вашего компонента должна идти в onCreate(). Поместите ваш

mShowCounter = (TextView) findViewById(R.id.text_view_counter);
button = (Button) findViewById(R.id.toast_button);

внутри onCreate().

1
ответ дан Nilesh Rathod 15 August 2018 в 20:49
поделиться

Android-приложение продолжает сбой в AVD, но правильно построено в Gradle

Поскольку вы выполняете findViewById вне onCreate(), не делая setContentView()

Сделайте findViewById внутри onCreate() метода после setContentView()

Объявите свой TextView mShowCounter и Button button; как Глобальный

КОД ОБРАЗЦА

public class MainActivity extends AppCompatActivity {

 TextView mShowCounter ;
 Button button  ;
private int mCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     mShowCounter = (TextView) findViewById(R.id.text_view_counter);
     button = (Button) findViewById(R.id.toast_button);
}


public void showToast(View view) {
    Toast toast = Toast.makeText(this, 
R.string.toast_popup,Toast.LENGTH_LONG);
    toast.show();
}

public void counterUp(View view) {
    mCount++;
    if(mShowCounter != null) {
        mShowCounter.setText(Integer.toString(mCount));
    }
}
}
2
ответ дан VicJordan 15 August 2018 в 20:49
поделиться
  • 1
    @AqibAhmed объявляет ваш mShowCounter глобальным, как мой ответ, он будет работать – Nilesh Rathod 6 July 2018 в 04:02
  • 2
    Это сработало! Большое вам спасибо за мгновенную помощь, которую вы дали. Благодаря тонну! – Aqib Ahmed 6 July 2018 в 04:03
  • 3
    @AqibAhmed рад помочь вам – Nilesh Rathod 6 July 2018 в 04:03
  • 4
    @AqibAhmed, пожалуйста, примите этот ответ, как это i.stack.imgur.com/LkiIZ.png thanks – Nilesh Rathod 6 July 2018 в 04:03
  • 5
    @NileshRathod у него нет никакой привилегии. Но у меня есть .. !! – Mr. Roshan 6 July 2018 в 04:08
Другие вопросы по тегам:

Похожие вопросы: