我正在尝试通过共享首选项将一个字符串发送到另一 Activity 。我想回调相同的 Activity 。
我有多个 Activity ,它们调用一个共同的 Activity 。因此,我想确定从哪个 Activity 中调用了公共(public) Activity ,并想返回到调用它的同一 Activity 。
这是我在第一个 Activity 中完成的:
SharedPreferences mPrefs = getSharedPreferences("Type", 0);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("gosend","1");
editor.commit();
在第二个 Activity 中
SharedPreferences mPrefs = getSharedPreferences("Type1", 0);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("goride", "2");
editor.commit();
在共同 Activity 中
useLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences mPrefs = getSharedPreferences("Type", 0);
activityType = mPrefs.getString("gosend", "1");
SharedPreferences mPrefs1 = getSharedPreferences("Type1",0);
goride = mPrefs1.getString("goride","2");
if(activityType.equals("1")) {
intent = new Intent(ChooseFromMapActivity.this, GoSend.class);
startActivity(intent);
}
if(goride.equals("2"))
{
intent = new Intent(ChooseFromMapActivity.this, GoRideActivity.class);
startActivity(intent);
}
}
});
}
现在,当我从第一个 Activity 调用通用 Activity 时,我不会返回到同一个 Activity ,而是正在调用第二个 Activity 。
出了什么问题?
编辑
我尝试了这个:仍然不起作用
useLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences mPrefs = getSharedPreferences("Type", 0);
activityType = mPrefs.getString("gosend", "0");
// SharedPreferences mPrefs1 = getSharedPreferences("Type1",0);
// goride = mPrefs1.getString("goride","0");
switch (activityType){
case "0":
intent = new Intent(ChooseFromMapActivity.this, GoSend.class);
startActivity(intent);
break;
case "1":
intent = new Intent(ChooseFromMapActivity.this, GoRideActivity.class);
startActivity(intent);
break;
}
}
最佳答案
您在写入两个文件时调用相同的共享首选项
第一个 Activity 的注释 -->> SharedPreferences.Editor编辑器= mPrefs.edit();
第二次 Activity 的注释 -->> SharedPreferences mPrefs = getSharedPreferences("Type1", 0);
在您的共同 Activity 中... -->SharedPreferences mPrefs = getSharedPreferences("类型", 0); ActivityType = mPrefs.getString("gosend", "1");
SharedPreferences mPrefs1 = getSharedPreferences("Type1",0);
goride = mPrefs1.getString("goride","2");
您指的是与代码中相同的文件,但实际上,您想要做的是指2个单独的共享首选项...
mPref 和 mPref1....
所以,你必须决定使用其中一个,而不是两个......
编辑 --->> 更新代码建议。
在您的 Activity 1 中
SharedPreferences mPrefs = getSharedPreferences("Type", 0);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("gosend","1");
editor.commit();
在您的 Activity 2 中
SharedPreferences mPrefs = getSharedPreferences("Type1", 0);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("gosend", "2");
editor.commit();
==>> 确保“gosend”值是您想要的值。您正在测量对“gosend”所做的更改,因为在您的代码中,您想要测试“gosend”值,并根据这些值打开不同的 Activity 。
在您的共同 Activity 中
useLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences mPrefs = getSharedPreferences("Type", 0);
activityType = mPrefs.getString("gosend", "0");
// SharedPreferences mPrefs1 = getSharedPreferences("Type1",0);
// goride = mPrefs1.getString("goride","0");
switch (activityType){
case "0":
intent = new Intent(ChooseFromMapActivity.this, GoSend.class);
startActivity(intent);
break;
case "1":
intent = new Intent(ChooseFromMapActivity.this, GoRideActivity.class);
startActivity(intent);
break;
}
}
}
**祝你好运,希望这有帮助..
关于java - 无法正确访问共享首选项数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34649004/