如何在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活动巨魔在哪里?