Android 返回键 返回上一级Activity

本文探讨了Android应用中通过按钮触发的页面跳转机制,并详细阐述了如何利用返回键实现从子Activity返回到父Activity的操作。通过实例代码展示了在MainActivity中设置按钮点击事件以启动ChildActivity,在ChildActivity中监听返回键事件并实现返回操作。

Android 返回键 返回上一级Activity

 

 功能需求:有两个Activity,一个为MainActivity,一个为ChildActivity,

在MainActivity中单击button进入ChildActivity,

在ChildActivity中单击返回键返回MainActivity


       MainActivity代码:

       view plaincopy to clipboardprint?
button1.setOnClickListener(new Button.OnClickListener(){   
            public void onClick(View v) {   
                Intent intent=new Intent();   
            intent.setClass(MainActivity.this, ChildActivity.class);   
                startActivity(intent);              

//MainActivity.this.finish();     //MainActivity不可以finish   
            }              
        });  



     ChildActivity代码:

     view plaincopy to clipboardprint?
public boolean OnKeyDown(int keyCode,KeyEvent event){   
        if (keyCode==KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {   
            Intent intent=new Intent();   
            intent.setClass(ChildActivity.this, MainActivity.class);   
            startActivity(intent);   
            ChildActivity.this.finish();   
        }      
        return false;   
     } 

Android 开发中,返回一个 `Activity` 是一个常见的需求,通常通过系统自带的返回栈(Back Stack)机制实现。以下是一些常用方法和注意事项: ### 1. 使用系统返回 Android 系统默认提供了返回栈机制,当用户按下设备上的返回时,当前 `Activity` 会被销毁,系统会恢复上一个 `Activity`。这是最标准、最推荐的方式。 ### 2. 通过 `finish()` 方法结束当前 `Activity` 如果需要在特定操作(如点击按钮)后返回一级界面,可以在当前 `Activity` 中调用 `finish()` 方法。这将结束当前 `Activity`,并自动返回到上一个处于返回栈中的 `Activity` [^2]。例如: ```java public void GoBack(View view) { finish(); } ``` ### 3. 使用 `Intent` 显式跳转 虽然通常不推荐这种方式(因为会创建新的 `Activity` 实例),但在某些特殊场景下可以通过 `Intent` 显式跳转回上一个 `Activity`。例如: ```java Intent intent = new Intent(CurrentActivity.this, PreviousActivity.class); startActivity(intent); ``` 如果希望避免创建新的实例,可以使用 `Intent` 的标志位来控制任务栈,例如: ```java Intent intent = new Intent(CurrentActivity.this, PreviousActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); ``` ### 4. 返回时刷新上一个 `Activity` 如果希望在返回时刷新上一个 `Activity` 的内容(例如更新 `ListView`),可以在上一个 `Activity` 中重写 `onResume()` 方法,并在此方法中执行刷新逻辑 [^3]。例如: ```java @Override protected void onResume() { super.onResume(); // 执行刷新操作,如重新加载数据 } ``` ### 5. 自定义返回行为 如果希望在点击某个按钮时模拟系统返回的行为,可以调用 `onBackPressed()` 方法。例如: ```java toolbarBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); ``` 这种方式会触发 `Activity` 的 `onBackPressed()` 方法,与用户按下物理返回行为一致 [^1]。 ### 注意事项 - 如果在启动 `Activity` 时调用了 `finish()` 方法结束当前 `Activity`,则返回时不会重新创建该 `Activity`,而是从返回栈中恢复。 - 使用 `Intent` 显式跳转时,若不使用 `FLAG_ACTIVITY_CLEAR_TOP` 等标志位,可能会导致任务栈中出现多个相同的 `Activity` 实例。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值