如何在android中返回到父活动?
我有三个安卓如何在android中返回到父活动?,android,android-intent,android-activity,sharedpreferences,Android,Android Intent,Android Activity,Sharedpreferences,我有三个安卓activityA、B、C 我正在从A活动调用B活动: public void onCreate(){ Intent intent = new Intent(A.this, B.class); startActivity(intent); finish(); } 在后续的B活动中,我正在使用SharedReference: protected void onSuccess(Bundle savedInstanceState) { sharedpreferences =
activity
A、B、C
我正在从A
活动调用B
活动:
public void onCreate(){
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
finish();
}
在后续的B
活动中,我正在使用SharedReference
:
protected void onSuccess(Bundle savedInstanceState) {
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
/...../
editor.apply()
}
现在我想访问A
activity类中的SharedReferences
的参数。我将使用哪种活动方法A
获取这些参数<代码>成功?。活动B
在访问这些参数之前也将返回活动A
。我该怎么做?我是Android
开发的新手
#Edit
public void onCreate(){
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
finish();
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
String name = sharedpreferences.getString(Name, "");
}
SharedReference具有应用程序范围。因此,即使您将它们保存到活动中,您也可以在应用程序的每个其他活动中调用它们 在每个活动中,您都可以调用此选项来保存某些Pref:
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("Key", "Value");
editor.putInt("Key2", Value(int));
editor.apply();
并且,始终可以通过调用以下命令从所有活动中检索它们:
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
String restoredText = prefs.getString("Key", null);
if (restoredText != null)
{
int Key2= prefs.getInt("Key2", -1);
/*if (selectionStart != -1)
{
//do Something
}*/
}
您可以找到一个很好的指南,它几乎解释了您需要知道的所有内容:)
编辑:
好的,这张图片可以帮助你理解Android的生命周期:
由于您想从活动B返回到活动A,因此可以避免调用finish()
方法;您可以执行以下操作:
活动A:
Intent i = new Intent(A.this, B.class);
startActivity(i);
现在,A活动将是应用程序后台B活动下方的第一个活动
活动B:
//Do your stuffs
finish();
现在活动B将关闭,A将再次显示
如果仍要完成A活动,请在B活动中,而不是finish()代码>再次使用意图:
Intent i = new Intent(B.this, A.class);
startActivity(i);
finish();
如果必须将数据传回活动A,请在A活动中使用startActivityForResult()调用B代码>。医生是怎么想的
但如果在B活动中,您只需要获取sharedPref并在活动中使用它们,我建议您直接从活动中检索它们,因为它们具有应用程序范围
编辑2:
您可以在onCreate()中访问SharedPref,但前提是在保存sp后调用onCreate方法
我建议您使用最后一种方法:用
Intent i = new Intent(A.this, B.class);
startActivity(i);
finish();
然后打电话给
Intent i = new Intent(B.this, A.class);
startActivity(i);
finish();
您将在onCreate中拥有sharedPrefs
对于任何问题,我仍然在这里:)
PS:请记住,如果存在SharedPref,请使用
if (sharedPref.contains("Key"))
{
// dosomething
}
PPS:SharedPref通常仅用于设置,如果您需要保存更多值,请尝试查看一个非常简单的应用程序数据库谢谢您的回答。从A
调用活动B
后,当从活动B
侧完成所有操作时,我希望将光标返回到活动A
。在将其从B
返回到活动A
后,我想使用此共享的引用数据。@因此,我想知道我是否理解:您想在活动B中获取共享引用并在活动A中使用它们吗?是的,我想在B
活动中设置值并将其用于A
活动。我尝试了上面的代码(参见编辑部分)。放置调试点后,我发现光标首先到达A.onCreate().Finish()
而不是B.onSuccess()
@SnowClue(),我希望这就是您想要的:)同意SharedRef具有AppScope,但在A
活动的哪个方法中,我将从B
活动获取设置值?我确信我无法进入A.onCreate()
方法。我要找的是:启动一个活动->从A调用B活动->在B活动的共享pref中设置值->返回到一个活动->从SetPref中获取值->从A调用C活动您的C活动巨魔在哪里?