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

时间:2019-02-03 19:14:13

标签: android android-intent android-activity android-button

我有一个具有两个活动的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。之后,在重新创建的startButton上单击MainActivity的第二次尝试,我被重定向到CameraActivity

在日志中,我看到,startButton的第一次单击会尝试打开CameraActivity,但会退回到MainActivity,而第二次尝试会打开{ {1}}成功。

第一次尝试单击CameraActivity的日志是here,第二次尝试是here

2 个答案:

答案 0 :(得分:3)

考虑到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类中没有多余的意图将您重定向到主要活动。请删除它们(如果有的话),然后使用以下代码完成CameraActivity类,

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

答案 1 :(得分:2)

也许您在第二项活动CameraActivity.java上遇到一些问题?也许这就是为什么它仅在第二次尝试后(崩溃或隐藏)打开的原因。在startActivity(i);方法调用finish();之后添加,然后看看会发生什么。仔细检查您的CameraActivity.javaManifest.xml

为什么还要在getApplicationContext()中使用new Intent(getApplicationContext(), ...);?如果在Activity中调用它,则应使用ActivityName.this