-1

ユーザーが使用できるシークバーしかない非常にシンプルなアプリケーションを作成しています。私のコードは次のようになります:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    int number=50;
    SeekBar sb = (SeekBar)findViewById(R.id.slider);
    sb.setMax(100);
    sb.setProgress(number);
    sb.setOnSeekBarChangeListener(this);
}

@Override
public void onProgressChanged(SeekBar v, int progress, boolean isUser) {
    TextView tv = (TextView)findViewById(R.id.percent);
    tv.setText(Integer.toString(progress)+"%");


}

私がやりたいのは、シークバーの状態を保存することです。アプリケーションが強制終了され、ユーザーが再度開くと、最後の変更がデフォルトではなくシークバーに表示されます。だから私は私のint番号変数で共有設定を使用する必要がありますか?アプリケーションが再起動すると行が再度実行されるため、どうすればそれができるのか理解できません。そのint number=50ため、値は再び50になります。

4

4 に答える 4

1

StackOverflowはリサーチアシスタントではありません。あなたが達成しようとしているタスクは途方もなく単純です。

詳細については、ドキュメントを参照してください。

于 2012-06-07T20:06:15.317 に答える
0

これは、必要なデータ型に合わせて変更できます。

private void loadSettings(){
    if(prefs == null) prefs = mContext.getSharedPreferences(PREF_KEY, 0);

    yourString = prefs.getString(YOUR_KEY, ""); 
}
private void saveSettings(){
    if(prefs == null) prefs = mContext.getSharedPreferences(PREF_KEY, 0);

    SharedPreferences.Editor prefsEd = prefs.edit();

    prefsEd.putString(YOUR_KEY, yourString);

    prefsEd.commit();
}
于 2012-06-07T20:05:14.210 に答える
0

これは、sharedPreferenceまたはsavedInstanceStateの両方で実行できます。

[インスタンスの状態を保存]を使用してAndroidアクティビティの状態を保存するを確認してください

もちろん、そのハードコードされた割り当てで常に10になることの価値。そのルートに行くことにした場合は、sharedprefのその値を取得する必要があります。

于 2012-06-07T20:05:20.297 に答える
0

このようなものが機能するはずです:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    SharedPreferences sp;
    SharedPreferences.Editor spe;


    sp = PreferenceManager.getDefaultSharedPreferences(this);
    spe = sp.edit();


    int number= sp.getInt("seekNum", 50);
    SeekBar sb = (SeekBar)findViewById(R.id.slider);
    sb.setMax(100);
    sb.setProgress(number);
    sb.setOnSeekBarChangeListener(this);
}

@Override
public void onProgressChanged(SeekBar v, int progress, boolean isUser) {
    TextView tv = (TextView)findViewById(R.id.percent);
    tv.setText(Integer.toString(progress)+"%");


}


@Override
public void onStop(){
    super.onStop();

    spe.putInt("seekNum", sb.getProgress());
    spe.commit();
}
于 2012-06-07T20:08:40.543 に答える