输入活动时,Android整数递增

时间:2014-02-27 23:02:46

标签: android android-activity int auto-increment storing-data

非常简单的问题。我希望每次用户输入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.听起来可能很简单,但我非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您需要在活动之外保留参考,因为每次您离开时都会重置或GC。

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

public class confirmTaskForm extends FragmentActivity {

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

AndroidManifest:

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

答案 1 :(得分: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();
}

答案 2 :(得分: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;
      }