首页 > 解决方案 > 每当调用 onCreate() 时增加一个变量

问题描述

每当调用 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);
}

标签: javaandroid

解决方案


你永远不应该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

示例代码

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

推荐阅读