Android 更改为其他活动时保持活动状态

Android 更改为其他活动时保持活动状态,android,android-activity,Android,Android Activity,我有以下情况: 活动A>活动B 活动A

我有以下情况:

  • 活动A>活动B
  • 活动A<活动B
  • 我想做的是在单击活动B的后退按钮时保持活动A的状态

    活动A代码:

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_product_details);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        if (toolbar != null)
        {
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
    
        // check for saved instance
        if (savedInstanceState != null)
        {
            //restore saved values
        } 
        else
        {
            //initialize members with default values
        }
    }
    
    
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState)
    {
        savedInstanceState.putString("typeID", typeID);
    
        super.onSaveInstanceState(savedInstanceState);
    }
    
    
    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState)
    {
        super.onRestoreInstanceState(savedInstanceState);
    
        typeID = savedInstanceState.getString("typeID");
    }
    
    public boolean gotoActivityB(View view)
    {
        Intent intent = new Intent(getApplicationContext(), ActivityB.class);
        startActivity(intent);
    
        return false;
    }
    
    活动B代码:

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_buy_item);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        if (toolbar != null)
        {
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
    
    
        //do some magic...
    }
    
    public boolean onOptionsItemSelected(MenuItem item)
    {
        Intent intent = new Intent(getApplicationContext(), ActivityA.class);
        startActivity(intent);
    
        return false;
    }
    
    每次我从活动B转到活动A,savedInstanceState都等于null,换句话说,活动A的状态不会被保存或还原

    我错过了什么

    !!解决方案

    根据的回答,活动默认保持其状态。因此,不需要savedInstanceState。为了解决我的问题,我只需将我的后退按钮事件更新为:

    public boolean onOptionsItemSelected(MenuItem item)
    {
        finish();
    
        return true;
    }
    
    作为各国的文件:

    调用onPause()而不调用onPause()的示例 onSaveInstanceState(Bundle)是当活动B在 活动A:系统可能会避免调用saveInstanceState(Bundle) 在活动A上,如果自 的用户界面状态将保持不变

    因此,您不能仅仅因为
    B
    A
    前面启动,就假定
    onSaveInstanceState()
    会在
    A
    上被调用。事实上,在大多数情况下,情况并非如此

    [已编辑]


    您的B代码似乎正在调用startActivity()以“返回”到之前的活动。如果您只想让B返回到上一个活动,您可以(通常)调用finish()退出B,这将允许A重新出现(其状态保持不变),因为它将成为中的顶级活动。

    谢谢您的回复。我如何解决我的问题?如何保存活动状态?您可能不需要保存实例状态。您的
    B
    代码似乎正在调用
    startActivity()
    以“返回”到上一个活动。如果您只想
    B
    返回到之前的活动,您可以(通常)调用
    finish()
    退出
    B
    ,这将允许
    A
    重新出现(其状态保持不变),因为它将成为中的顶级活动。让它工作吧!:)谢谢你的帮助。我是android开发新手,不完全理解导航模式是如何工作的。现在我明白了。再次感谢