Увеличивать переменную всякий раз, когда вызывается onCreate () - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу увеличивать тестовую переменную всякий раз, когда вызывается onCreate (), но мое приложение падает. Пожалуйста, помогите мне найти исправление и скажите, почему происходит сбой моего приложения.

public int test = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView num = (TextView) findViewById(R.id.textNum);
    new MainActivity().test++;
    num.setText(new MainActivity().test);
}

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Вы никогда не должны создавать экземпляр Activity самим собой

. Вы можете получить прямой доступ к вашему test в вашем MainActivity без необходимости использовать MainActivity().test для доступа к вашей переменной test

если вы хотите установить integer значение для вашего textview, то вам нужно преобразовать целое число в string значение, например String.valueOf(test) или ""+test

Попробуйте этот способ

public int test=0;
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    TextView num=(TextView) findViewById(R.id.textNum);
    test++;
    num.setText(String.valueOf(test));
}

если вы хотите увеличивать тестовую переменную при каждом вызове onCreate(), вы можете использовать SharedPreferences

SAMPLE CODE

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;

public class Main2Activity extends AppCompatActivity {

    String prefName = "MY_PREFS_NAME";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        SharedPreferences prefs = getSharedPreferences(prefName, MODE_PRIVATE);

        SharedPreferences.Editor editor = getSharedPreferences(prefName, MODE_PRIVATE).edit();

        int test = prefs.getInt("counter", 0);
        test++;
        editor.putInt("counter", test);
        editor.apply();
    }
}
0 голосов
/ 17 апреля 2020

Хорошо, позвольте мне немного рассказать о жизненном цикле активности:

onCreate ()

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

onStart ()

Будет вызываться каждый раз, когда выполняется действие показано, что означает, когда действие создается или когда вы go возвращаетесь к действию, я думаю, что это метод, в котором вы увеличиваете тест.

пример

public int test = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView num = (TextView) findViewById(R.id.textNum);


}

@Override
protected void onStart() {
    super.onStart();

    test++;
    num.setText(String.valueOf(test));


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...