我正在尝试通过共享首选项将一个字符串发送到另一个活动。我想回复同样的活动。
我有多个活动,它们共同调用一个活动。所以我想确定已经调用了哪个公共活动,并想要回到调用它的同一个活动。
这是我在第1次活动中所做的:
SharedPreferences mPrefs = getSharedPreferences("Type", 0);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("gosend","1");
editor.commit();
第二次活动
SharedPreferences mPrefs = getSharedPreferences("Type1", 0);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("goride", "2");
editor.commit();
共同活动
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);
}
}
});
}
现在,当我从第一个活动中调用常见活动时,我没有回到相同的第二个活动被调用。
什么出错?
编辑
我试过这个:仍然无法正常工作
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;
}
}
答案 0 :(得分:0)
在您的常见活动中尝试以下代码:
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");
if(activityType.equals("1")) {
intent = new Intent(ChooseFromMapActivity.this, GoSend.class);
startActivity(intent);
}
else if(goride.equals("2"))
{
intent = new Intent(ChooseFromMapActivity.this, GoRideActivity.class);
startActivity(intent);
}
}
});
}
让我知道你的问题已经解决了。您的默认值与所需的值匹配,因此每次first if语句都将变为true。
希望这有帮助。
答案 1 :(得分:0)
在编写两个文件时,您正在调用相同的共享首选项
第一项活动的注意事项 - >> SharedPreferences.Editor editor = mPrefs.edit();
第二项活动的说明 - >> SharedPreferences mPrefs = getSharedPreferences(“Type1”,0);
并在您的共同活动中...... - > SharedPreferences mPrefs = getSharedPreferences(“Type”,0); activityType = mPrefs.getString(“gosend”,“1”);
SharedPreferences mPrefs1 = getSharedPreferences("Type1",0);
goride = mPrefs1.getString("goride","2");
您指的是与您的代码中相同的文件,但实际上,您尝试做的是引用2个单独的共享偏好...
mPref& mPref1 ....
所以,你必须决定使用其中一个,而不是两个......
编辑--->>更新代码建议。
您的活动1 中的SharedPreferences mPrefs = getSharedPreferences("Type", 0);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("gosend","1");
editor.commit();
您的活动2 SharedPreferences mPrefs = getSharedPreferences("Type1", 0);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("gosend", "2");
editor.commit();
==>>确保“gosend”值是您想要的值。您正在对“gosend”所做的更改进行测量,因为在您的代码中,您希望测试“gosend”值,并根据值打开不同的活动。
您的共同活动中的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;
}
}
}
**祝你好运,希望对此有所帮助..