恢复previous活动onBack pressed [英] Resume previous activity onBackPressed

查看:115
本文介绍了恢复previous活动onBack pressed的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的项目中的两项活动。 A和B,当用户点击活性的一个按钮,我打开b活动

A ---> B

当用户单击后退按钮,应用程序返回的活动时,

A

在此活动中,我有一个名为继续按钮,想回到b活动没有失去任何东西。这可能吗?

一个----> B(旧州)

感谢。

在活动A

 意图去=新的意图(这一点,ActivityB.class);
 go.putExtra(类型,1);
 startActivity(GO);
 

在b活动后退按钮单击事件

 如果(v.getId()== R.id.back)
     super.onBack pressed();
 

在活动恢复按钮(应该恢复活动B),这code是可能是错误的。

 意图去=新的意图(这一点,ActivityB.class);
 startActivity(GO);
 

和清单文件,

 <活动
        机器人:名称=ActivityB
        机器人:标签=@字符串/ APP_NAME
        机器人:launchMode =singleTop
        机器人:screenOrientation =画像>
    < /活性GT;
    <活动
        机器人:名称=ActivityA
        机器人:标签=@字符串/ APP_NAME
        机器人:screenOrientation =画像>
        <意向滤光器>
            <作用机器人:名称=android.intent.action.MAIN/>

            <类机器人:名称=android.intent.category.LAUNCHER/>
        &所述; /意图滤光器>
    < /活性GT;
 

解决方案

试试这个:

在您的清单,

 <活动
    机器人:标签=@字符串/ APP_NAME机器人:NAME =ActivityB
    机器人:launchMode =singleTop>
 

和别叫活动B上的面漆(),而回去。所以应该恢复运行活动B的旧实例。

参考

因此​​,现在的singleTop活性的新的实例将只被创建来处理新的意图,如果没有任何实例已经。然而,如果目标任务已经在其堆栈顶部的活性的现有实例,该实例将接收新的意图(在onNewIntent()调用);不创建一个新的实例。

编辑:

这code对我的作品:

MainActivity

  //转到按钮的onClick
公共无效goToSecond(视图v){

    意图去=新的意图(这一点,ChildActivity.class);
    startActivity(GO);
}

//恢复按钮的onClick
公共无效resumeSecond(视图v){

    意图去=新的意图(这一点,ChildActivity.class);
    startActivity(GO);
}
 

ChildActivity

  //后退按钮的onClick
公共无效GoBack的(视图v){
    // onBack pressed();
    意图去=新的意图(这一点,MainActivity.class);
    startActivity(GO);
}
 

和在明显的:

 <活动
    机器人:名称=com.example.testingproj.ChildActivity
    机器人:标签=@字符串/ APP_NAME
    机器人:launchMode =singleTask>
 

此时, ChildActivity 的onCreate()被称为只是当我点击按钮进入。如果我点击开始按钮,它不会重新创建。

I have two activities in my project. A and B, when user click a button in activity A , i am opening activity B

A --- > B

When user click back button ,application returns the activity A

A

In this activity i have a button named "Resume" , and want to return to activity B without losing anything. is it possible ?

A ----> B (old state)

Thanks.

In activity A

 Intent go = new Intent(this,ActivityB.class);
 go.putExtra("type", 1);
 startActivity(go);

Back button click event in Activity B

  if(v.getId() == R.id.back)
     super.onBackPressed();

Resume Button in Activity A (should resume activity B) , this code is probably wrong

 Intent go = new Intent(this,ActivityB.class);
 startActivity(go);

And manifest file,

      <activity
        android:name="ActivityB"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name="ActivityA"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

解决方案

Try this:

In your manifest,

<activity
    android:label="@string/app_name" android:name="ActivityB"
    android:launchMode="singleTop" >

And don't call finish() on activity B while going back. So it should resume the old instance of running activity B.

Reference

So now a new instance of a "singleTop" activity will only be created to handle a new intent if there is no any instance already. However, if the target task already has an existing instance of the activity at the top of its stack, that instance will receive the new intent (in an onNewIntent() call); a new instance is not created.

Edit:

This code works for me:

In MainActivity:

//Go button's onClick
public void goToSecond(View v) {

    Intent go = new Intent(this, ChildActivity.class);
    startActivity(go);
}

//Resume button's onClick
public void resumeSecond(View v) {

    Intent go = new Intent(this, ChildActivity.class);
    startActivity(go);
}

In ChildActivity:

//Back button's onClick
public void goback(View v) {
    // onBackPressed();
    Intent go = new Intent(this, MainActivity.class);
    startActivity(go);
}

And in manifest:

<activity
    android:name="com.example.testingproj.ChildActivity"
    android:label="@string/app_name"
    android:launchMode="singleTask" >

At this time, ChildActivity's onCreate() is called just when I click on button Go. If I click on Resume button, its not recreated.

这篇关于恢复previous活动onBack pressed的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆