BackButton调用上一个活动



使用此代码时,我调用Next Activity。

代码

public void click_contact(View v)
{
 Intent myIntent = new Intent(MainActivity.this, ContactActivity.class);
 MainActivity.this.startActivity(myIntent);
 overridePendingTransition (R.anim.slide_in_right, R.anim.slide_out_left);
 finish();
}

所以"ContactActivity"是午餐。当按下设备内置的"后退"按钮时,上一个活动("MainActivity")将关闭。但我想重新启动这项活动。

删除finsh();在最后一行并尝试。然后,按下后退按钮,您将获得"主活动"。

希望它能帮助你。

重写backPress将启动新的意图。这不好!只是不要恰到好处地完成()。我想这应该会自动将你带到上一个活动。

这是您的代码

    public void click_contact(View v){
    Intent myIntent = new Intent(MainActivity.this, ContactActivity.class);
    MainActivity.this.startActivity(myIntent);
    overridePendingTransition (R.anim.slide_in_right, R.anim.slide_out_left);
    finish();
}

为什么使用finish()。通过使用finish,您将从活动堆栈中删除或删除活动(在您的情况下为MainActivity)。或者您可以说该活动不会添加到堆栈中。因此,在背按时将不会有任何活动要加载。所以不要使用finish()

只需使用

startActivity(new Intent(ContactActivity.this, MainActivity.class));
overridePendingTransition (R.anim.slide_in_right, R.anim.slide_out_left);

因此,通过删除finish,您的MainActivity将被添加到活动堆栈中,并在ContactActivity进行反按,它将自动加载您的MainActivity

仔细观察这个

您在MainActivity中删除了finish()吗?

然后,检查启动MainActivity的意图上的FLAG。您可能使用了FLAG_NO_HISTORY。这意味着当活动进入后台时,它将完成。

如果您想恢复MainActivity,那么您应该从代码中删除finish()代码

public void click_contact(View v)
{
    Intent myIntent = new Intent(MainActivity.this, ContactActivity.class);
    MainActivity.this.startActivity(myIntent);
    overridePendingTransition (R.anim.slide_in_right, R.anim.slide_out_left);
}

如果你想在ContactActivity中重新启动MainActivity,那么你应该在onBackPressed():中启动它

代码

@Override
public void onBackPressed() 
{
    Intent myIntent = new Intent(ContactActivity.this, MainActivity.class);
    startActivity(myIntent);
    super.onBackPressed();
}

相关内容

最新更新