我必须将保存文件路径从一个活动转移到另一个活动,但是当显示数据时它显示为空值。
以下是在SharedPreference中存储数据的代码: -
SharedPreferences pref= getApplicationContext().getSharedPreferences("Recorder",0);
SharedPreferences.Editor editor = pref.edit();
editor.putString("file_name",DateFormat.format("yyyy-MM-dd_kk-mm-ss", new Date().getTime())+".mp4");
editor.putString("file_path",Environment.getExternalStorageDirectory()+"/"+DateFormat.format("yyyy-MM-dd_kk-mm-ss", new Date().getTime())+".mp4");
从sharedPreference中检索数据: -
file_name = (TextView) findViewById(R.id.file_name);
file_path = (TextView) findViewById(R.id.file_path);
pref = getApplicationContext().getSharedPreferences("Recorder",0);
editor = pref.edit();
String fileName = pref.getString("file_name",null);
String filePath = pref.getString("file_path",null);
if(fileName != null){
file_name.setText(fileName);
}else{
file_name.append("");
}
if (filePath != null){
file_path.setText(filePath);
}else{
file_path.append("");
}
答案 0 :(得分:2)
您必须通过
应用编辑器editor.commit():
或
editor.apply();
答案 1 :(得分:1)
editor.apply()
。你没有提交保存。
答案 2 :(得分:1)
为什么需要超载系统?你有一个在活动之间传递数据的机制,只需在intent中发送文件的路径。
在ActivityA中:
Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putExtra("filePath", "...");
startActivity(intent);
在ActivityB中:
String filePath = getIntent().getExtras().getString("filePath");
答案 3 :(得分:0)
是的,您可以使用SharedPreference 存储信息。
要将数据从一个活动传递到另一个活动,最好使用意图。
Intent intent = new Intent(CurrentActivity.this, AnotherActivity.class);
intent.putExtra("file_name","name");
intent.putExtra("file_path","path");
startActivity(intent)
在另一个活动中,
String fileName = getIntent().getStringExtra("file_name");
String filePath = getIntent().getStringExtra("file_path");
答案 4 :(得分:0)
如果您使用SharedPreffernces只是为了在活动之间共享数据,那就太过分了。
如果应用重启后数据应该可用,那么您的解决方案就是好的。但是如果你只在运行时需要它,最好使用其他答案中提到的Intent。
就个人而言,我更愿意将其存储在一些静态变量中。
答案 5 :(得分:0)
editor.commit()丢失了。 更好的方法是使用可以在intent中设置的bundle,并使用此intent启动另一个活动,然后从intent的bundle中获取值。
答案 6 :(得分:0)
是的,您可以使用SharedPrefernces。尝试以下代码
public static final String MYPREFERNCES_Example = "mysharedpref";
SharedPreferences.Editor editor ;
SharedPreferences sp;
sp = getSharedPreferences(MYPREFERNCES_Example Context.MODE_PRIVATE);
editor=sp.edit();
Intent i_login = new Intent(LoginActivity.this, HomeActivity.class);
editor.putString("yourownkey1", yourvalue);
editor.putString("yourownkey2", yourvalue);
editor.putString("yourownkey3", yourvalue);
startActivity(intent)
并在下一个活动中
sp = getSharedPreferences(MYPREFERNCES_Example, 0);
editor = sp.edit();
String fn = sp.getString("yourownkey1", "");
String ln = sp.getString("yourownkey2", "");
String fbemail = sp.getString("yourownkey3", "");