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