Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android上使用共享首选项?_Java_Android_Database_Preferences_Shared - Fatal编程技术网

Java 如何在Android上使用共享首选项?

Java 如何在Android上使用共享首选项?,java,android,database,preferences,shared,Java,Android,Database,Preferences,Shared,我正在创建一个非常简单的应用程序,它只有一个用户可以使用的搜索栏。 我的代码如下所示: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); int number=50; SeekBar sb = (SeekBar)findViewById(R.id.slid

我正在创建一个非常简单的应用程序,它只有一个用户可以使用的搜索栏。 我的代码如下所示:

    @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 number变量使用共享首选项?我无法理解如何才能做到这一点,因为当应用程序再次启动时,将再次运行行
int number=50
,因此该值将再次变为50。

这可以针对您需要的任何数据类型进行修改:

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

您可以使用SharedReference或savedInstanceState来执行此操作

退房


当然,在那个硬编码的作业中,总是要做的值是10。如果你决定走这条路,你需要提取我们的SharedRef值。

StackOverflow不是你的研究助手。你试图完成的任务简单得可笑


有关更多信息,请参阅。

类似的方法应该可以:

@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();
}

在问这个问题之前,你有没有搜索过这个任务?我把它放在函数之外:SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(this);SharedReferences.Editor spe=sp.edit();SeekBar sb=(SeekBar)findviewbyd(R.id.slider);所以我所有的函数都可以看到,但它在运行时崩溃了