为什么 android Intent 第一次不起作用?

Why doesn't android intent work the first time?

我有一个有两个活动的 android 应用程序,MainActivity 是应用程序的开始屏幕,它有一个按钮,可以启动一个意图去 CameraActivity,代码这样做是:

startButton = findViewById(R.id.button_start);
startButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(getApplicationContext(), CameraActivity.class);
        startActivity(i);
    }
});

然而,当我启动应用程序并从 MainActivity 开始并单击 startButton 时,应用程序再次将我直接送回 MainActivity。在此之后,第二次尝试在重新创建的 MainActivity 上单击 startButton 时,我被重定向到 CameraActivity

在日志中,我可以看到,在第一次单击 startButton 时,它尝试打开 CameraActivity,但又返回到 MainActivity,在第二次尝试时,它打开 CameraActivity 成功。

第一次尝试点击 startButton 的日志是 here and the second attempt is here

考虑到您的 MainActivity 中的 startButton,请尝试将 'MainActivity.this' 代替 'getApplicationContext()'

startButton = findViewById(R.id.button_start);
startButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(MainActivity.this, CameraActivity.class);
        startActivity(i);
    }
});

其次,确保在 CameraActivity class 中没有额外的意图将您重定向到主 activity。请删除它们(如果有)并完成 CameraActivity class 而不是使用以下代码,

someBackButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        CameraActivity.this.finish();
    }
});

也许您对第二个 activity(即 CameraActivity.java)有一些疑问?也许这就是为什么它仅在第二次尝试后才打开(在崩溃或 smth. 之后)。在 startActivity(i); 方法调用 finish(); 之后添加,看看会发生什么。仔细检查您的 CameraActivity.javaManifest.xml

另外为什么在new Intent(getApplicationContext(), ...);中使用getApplicationContext()?如果你在 Activity 中调用它,你应该使用 ActivityName.this