当前位置: 首页 > 知识库问答 >
问题:

数据清除时重置活动

钱言
2023-03-14

我目前正在开发一个应用程序,但其中有一个错误。每当用户安装应用或清除数据时,应用都应重置。但相反,应用会为用户填充标准数据,而不是显示用户可以自己输入的开始屏幕。

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

    checkFirstRun();
    savedData();

    }

public void savedData() {
    showGoalTextView = (TextView) findViewById(R.id.textView3);
    showBeamsTextView = (TextView) findViewById(R.id.textView2);
    showGoalEditText = (EditText) findViewById(R.id.editText2);
    checkBtnPressed = (ImageButton) findViewById(R.id.imageButton5);
    showBeamsEditText = (EditText) findViewById(R.id.editText4);
    beamsGoal = (EditText) findViewById(R.id.editText4);

    //Fetch the stored data and display it upon starting.
    String goalSave = showGoalTextView.getText().toString();
    String beamsSave = showBeamsTextView.getText().toString();

    preferences = getSharedPreferences("userData", MODE_PRIVATE);

    goalSave = preferences.getString("goals", goalSave);
    beamsSave = preferences.getString("beam", beamsSave);

    showGoalTextView.setText(goalSave);
    showBeamsTextView.setText(beamsSave);

    //Hide all the first use stuff
    showGoalEditText.setVisibility(View.GONE);
    checkBtnPressed.setVisibility(View.GONE);
    showBeamsEditText.setVisibility(View.GONE);
    beamsGoal.setVisibility(View.GONE);
}


public void checkFirstRun() {
    final String PREFS_NAME = "MyPrefsFile";
    final String PREF_VERSION_CODE_KEY = "version_code";
    final int DOESNT_EXIST = -1;

    //Get current version code
    int currentVersionCode = BuildConfig.VERSION_CODE;

    //Get saved version
    SharedPreferences preferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    int savedVersionCode = preferences.getInt(PREF_VERSION_CODE_KEY, DOESNT_EXIST);

    //Check for first run or upgrade
    if (currentVersionCode == savedVersionCode) {
        //No big deal
        return;
    } else if (savedVersionCode == DOESNT_EXIST) {
        //TODO This is a new install
        resetAll();
    } else if (currentVersionCode > savedVersionCode) {
        //TODO This is an upgrade
        return;
    }

    //Update sharedPreferences with the current version code
    preferences.edit().putInt(PREF_VERSION_CODE_KEY, currentVersionCode).apply();
}

public void resetAll() {
    //For when resetting
    TextView showGoalTextView =
            (TextView) findViewById(R.id.textView3);
    EditText showGoalEditText =
            (EditText) findViewById(R.id.editText2);
    ImageButton checkBtnPressed =
            (ImageButton) findViewById(R.id.imageButton5);
    EditText showBeamsEditText =
            (EditText) findViewById(R.id.editText4);
    EditText beamsGoal =
            (EditText) findViewById(R.id.editText4);

    //Clear editTexts
    showGoalEditText.getText().clear();
    showBeamsEditText.getText().clear();

    //Show all editTexts
    showGoalEditText.setVisibility(View.VISIBLE);
    checkBtnPressed.setVisibility(View.VISIBLE);
    showBeamsEditText.setVisibility(View.VISIBLE);
    beamsGoal.setVisibility(View.VISIBLE);

    //Get the text view
    TextView showResetTextView =
            (TextView) findViewById(R.id.textView2);

    //Get the value of the text view
    String resetString = showResetTextView.getText().toString();

    //Convert value to a number and reset it
    Integer reset = Integer.parseInt(resetString);
    reset = 0;

    //Display the new value in the text view.
    showResetTextView.setText(reset.toString());
    showGoalTextView.setText("BEAMS");
}

我的问题主要是关于checkFirstRun方法。我想输入:

} 否则,如果 (保存的版本代码 == DOESNT_EXIST) { //TODO 这是一个新的安装重置All();

不幸的是,我无法让它工作。有人能指出手头的问题吗?

共有1个答案

翟俊茂
2023-03-14

卸载时不会清除SharedPreferences(至少自Marshmallow以来不会清除)。这可能有助于您解决这个问题当我卸载时SharedPreferences未被清除

 类似资料:
  • 我们可以通过以下查询删除所有节点和关系。 但是新创建的节点将内部id作为({最后一个节点内部id}+1)。它不会重置为零。 我们如何重置neo4j数据库,比如新创建的节点将获得id为0? 从2.3开始,我们可以删除所有有关系的节点,

  • Deprecated since version 0.52. When you delete objects (and buckets/containers), the Gateway marks the data for removal, but it is still available to users until it is purged. Since data still resides

  • 我正在开发一个应用程序,它显示带有。当我滚动的值被清除时。 下面是我的代码 适配器类别: 数据模型类 不知道我哪里做错了。

  • 清除地球上添加的数据,同时有将数据线和数据点清除的效果。 // 使用 clearData API 来清除数据 controller.clearData();

  • 本文向大家介绍Android系统设置中的清除数据会清除哪些数据?,包括了Android系统设置中的清除数据会清除哪些数据?的使用技巧和注意事项,需要的朋友参考一下 What will be removed If you click Clear Data Button in the System Application 今天中的一个story突然提到了系统设置中的清理数据,后来开始思考究竟系统的应用

  • 我正在使用图表加载图表。在页面启动时使用硬编码数据的js。接下来,单击一个按钮,我进行一个ajax查询;从数据库获取外部数据,并希望将该数据加载到图表中。 我已检索到正确的数据并将其存储为数组。我想清除当前图表数据,并将此新数组作为图表的新数据输入。 首先,我需要清空旧数据,并尝试、清除()和销毁(),但它们都不起作用。图表只是不断地用旧数据重新加载。旧图表似乎被删除了一瞬间,却又出现了。我该如何