首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Activity Lifecycle:startActivityForResult并按Back Button

Activity Lifecycle:startActivityForResult 按Back Button

在 Android 开发中,startActivityForResult 是一个用于启动另一个 Activity 并向其传递数据的方法。当用户按 Back Button 时,系统会回退到上一个 Activity。在回退过程中,系统会自动调用 onPause() 方法,停止当前 Activity 的运行。

为了在按 Back Button 时执行某些操作,可以重写 onPause() 方法并添加逻辑。例如,可以在 onPause() 中保存数据或执行一些清理操作。

以下是一个示例代码,演示如何在按 Back Button 时执行某些操作:

代码语言:scss
复制
// 导入所需库
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButton = findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 启动另一个 Activity
                startActivityForResult(new Intent(MainActivity.this, SecondActivity.class), 0);
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();

        // 在按 Back Button 时执行操作
        if (mButton != null) {
            mButton.setText("Back");
        }
    }

    @Override
    protected void onResume() {
        super.onResume();

        // 在按 Back Button 时更新按钮文本
        if (mButton != null) {
            mButton.setText("Forward");
        }
    }
}

在上述代码中,我们实现了两个按钮,一个用于启动另一个 Activity,一个用于在按 Back Button 时执行操作。在 onPause() 方法中,我们检查 mButton 是否为 null,如果是,则说明没有按钮正在被点击,因此我们可以执行一些清理操作。在按 Back Button 时,系统会调用 onPause() 方法,因此我们可以在这里更新按钮的文本。在 onResume() 方法中,我们检查 mButton 是否为 null,如果是,则说明按钮已经被点击,因此我们可以更新按钮的文本。

注意,在按 Back Button 时,系统只会调用 onPause() 方法,而不会调用 onStop() 方法。因此,如果需要在按 Back Button 时执行一些清理操作,可以在 onPause() 方法中执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • startActivityForResult的坑

    android中经常会遇到从当前的Activity跳转到另外一个Activity的情况,通常情况下我们会直接选择用startActivity或者startActivityForResult。如果你对这两个方法还不知道的话可以去https://www.cnblogs.com/fuck1/p/5456337.html看看。本文不会告诉你怎么使用这个方法,而是会说说笔者自己遇到的问题以及解决办法。 事情的起因是我在项目中遇到这样一个问题就是要求从下一个界面传数据回来,当时第一反应是用startActivityForResult解决,当我把代码敲完过后一测试,我擦咧,结果没回来。我以为是我代码写错了(这段代码很简单怎么可能会错)最后找到答案是因为Activity的启动模式被这只成了singleTask。好吧,这个有点坑自己了。于是我就自己测试了四种不同模式下启动模式对该方法的影响,(如果你对Activity的四种启动模式还不是很了解可以到https://blog.csdn.net/qq994467433/article/details/83350698看看)结果还真的挺有意思的。话不多说上代码。

    02
    领券