0

非常に単純な質問です。intユーザーが値を入力するたびに、値をActivity更新したい

初めて入るActivity int = 1 2回目に入る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

移動するたびにリセットまたは GC されるため、アクティビティの外部に参照を保持する必要があります。

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

public class confirmTaskForm extends FragmentActivity {

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

Androidマニフェスト:

<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 に答える