2013-08-20 50 views
1

我正在创建一个简单的应用程序,用户可以在其中更改seekbar值。将默认值设置为0,将setMax设置为5.每次关闭应用程序并重新启动时,seekbar值将设置为0.如何使用并设置关闭应用程序之前设置的以前的seekbar值。保存数据并在重新启动应用程序后使用它Android

这里是我的Activity类>

public class MainActivity extends Activity { 

SeekBar s; 
TextView v; 
public int n; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    s=(SeekBar)findViewById(R.id.seekBar1); 
    v=(TextView)findViewById(R.id.textView1); 
    next=(Button)findViewById(R.id.button1); 

    s.setProgress(n); 
    v.setText(n+" "); 

    s.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){ 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      // TODO Auto-generated method stub 
      n = progress; 
      v.setText(n+" "); 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
      v.setText(n+" "); 
     } 

    }); 
    } 
} 

我试着用和的onSaveInstanceState但onRestoreInstanceState未能恢复到以前的状态。 请帮忙

在此先感谢。

+0

共享偏好是你想要的这甚至后:http://stackoverflow.com/questions/3624280 – dymmeh

+0

我在共享首选项中尝试了所有可能的事情但未能获得保存的数据。请帮助我。我只想保存进度,即“n”,并在应用程序重新启动后检索它。 – Abhijit

回答

0

您可能想要查看开发人员指南中的存储选项。

具体来说,Shared Preferences似乎是一个很好的开始。

1

首先,只有当onSaveInstance和onRestoreInstance方法被触发时,因为方向改变发生破坏,因此你不能使用这种机制,为了在显式销毁活动之后存储以前的值,你可以使用android提供的持久性机制之一。 SharedPreferences或SQLiteDB在销毁活动之前保存它们,并在活动启动时恢复。

要获取最新的值,如果任何您需要添加此代码onCreate方法:

private SharedPreferences prefs; 
private int progress; 

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState);   
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
progress = prefs.getInt("myProgress", 0); 

}

//并把它存储所有的时间在activity被销毁之前,你必须在的onPause添加以下代码:

protected void onPause() { 
    super.onPause(); 
    Editor editPrefs = prefs.edit(); 
    editPrefs.putInt("myProgress", newProgressValue); 
    editPrefs.commit(); 

}

希望这有助于。

问候!

+0

我在共享首选项中尝试了所有可能的事情。但未能获得保存的数据。请帮助我。 我只想保存进度,即“n”,并在应用程序重新启动后检索它。 – Abhijit

+0

看看我的编辑,这就是你如何去做... –

+0

谢谢!这工作。但还有一个问题是我如何检查用户是否第一次打开应用程序? – Abhijit

0

,你可以尝试使用SQL数据库,该数据库将是availble的应用程序被关闭并重新打开

相关问题