2011-12-08 32 views
1

我想在上次的活动中将应用程序(进程kill)退出时保存字符串的值,以便当我再次启动该应用程序时,可以在第一个活动中检索该值。在应用程序退出时保存值

我试过了sharedpreferences但这并不能解决我的问题。这是代码片段。

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    Intent int1 = getIntent(); 
    String pth = prefs.getString("pathreturned", "true"); 

要在第一个活动中检索。

而这一次将它保存在前面的活动:

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_PRIVATE); 

    SharedPreferences.Editor e = myPrefs.edit(); 
    e.putString("pathreturned", path); 
    e.commit(); 
+0

您正在访问一个不同的设置文件两次,看到我的回答。 – st0le

+0

实际上在代码的其他部分存在问题!现在问题解决了。谢谢。 – user838522

回答

3

在以前的活动,使用相同的代码,你之前使用的一个...

而不是

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_PRIVATE); 

使用

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
+0

完美的作品!谢谢! – user838522

0

除非您知道哪个活动将成为“最后”,否则应在每个活动结束时保存您的价值。覆盖onStop方法并将其保存在那里。

2

这里是保存字符串通过SharedPreferences的一个完整的例子

import android.app.Activity; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class SharedPrefs extends Activity implements OnClickListener{ 

private EditText dataInput; 
private TextView dataView; 
private SharedPreferences sharedString; 
public static final String myFile = "MySharedDataFile"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.sharedprefs); 
    setUpVariables(); 
    sharedString = getSharedPreferences(myFile, 0); 
} 

public void setUpVariables(){ 
    dataInput = (EditText) findViewById(R.id.dataToUse); 
    dataView = (TextView) findViewById(R.id.showDataView); 

    Button save = (Button) findViewById(R.id.savedataButton); 
    Button load = (Button) findViewById(R.id.loadDataButton); 
    save.setOnClickListener(this); 
    load.setOnClickListener(this); 
} 

public void onClick(View arg0) { 

    switch(arg0.getId()){ 
    case R.id.savedataButton: 
     String dataToSave = dataInput.getText().toString(); 
     Editor storeData = sharedString.edit(); 
     storeData.putString("key", dataToSave); 
     storeData.commit(); 
     break; 
    case R.id.loadDataButton: 
     sharedString = getSharedPreferences(myFile, 0); 
     String savedData = sharedString.getString("key", "No data Found"); 
     dataView.setText(savedData); 
     break; 
    } 

} 



} 
相关问题