0

非常简单的问题。我想更新一个int值,每次用户输入Activity例如

第一次进入Activity int = 1 第二次进入Activity int = 2等等..

这是我正在使用的代码

public class confirmTaskForm extends FragmentActivity {

    private int id = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

       id++;  
    }   
}

但是,每次Activity输入时,int值总是相同 = 1。这听起来很简单,但我真的很感激帮助。

4

3 回答 3

1

您需要在 Activity 之外保留引用,因为每次您离开时它都会被重置或 GC'd。

public class MyApplication extends Application {
     public static int myIdCache = 0;
}

public class confirmTaskForm extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
         MyApplication.myIdCache++;  
    }   
}

安卓清单:

<application
  android:name="com.my.package.MyApplication"
  ... other things

以上不是一个好的推荐编码实践


您还可以使用保持状态SharedPreferences

public class confirmTaskForm extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       SharedPreferences prefs = getDefaultSharedPreferences();
       prefs.edit().putInteger("id", prefs.getInteger("id", 0) + 1).commit();

       Log.d("TAG", "Id is: " + prefs.getInteger("id"));  
    }   
}
于 2014-02-27T23:13:48.907 回答
0

您可以将其保存在 sharedPreferences 中:

private int id=0;
protected void onCreate(android.os.Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getFromPreference();
    id++;
    saveInPreference();
}

private void getFromPreference() {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    id = prefs.getInt("Count", -1);
}

private void saveInPreference() {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    Editor editor = prefs.edit();
    editor.putInt("Count", id);
    editor.commit();
}
于 2014-02-27T23:19:24.540 回答
0

如果您想在应用程序重新启动时继续计数,请制作id static或放入它。SharedPreferences

您可以使用此代码将计数器保存在SharedPreference.

private int count = 0;

protected void onCreate(Bundle savedInstanceState) {
         // getting shared preferences.
         SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
         // getting already saved count -  0 in case of first time
        int startCount = getPreferences(MODE_PRIVATE).getInt("count_key",count);
        // update count                
        startCount++;
        //restoring updated value
        getPreferences(MODE_PRIVATE).edit().putInt("count_key",startCount).commit();

        count = startCount;
      }
于 2014-02-27T23:19:31.020 回答