【问题标题】:Why doesn't android intent work the first time?为什么android意图第一次不起作用?
【发布时间】:2019-02-03 19:14:13
【问题描述】:

我有一个带有两个 activites 的 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,第二次点击是here

【问题讨论】:

  • 你在哪里设置你的onClickListener ?你能提供你的CameraActivity 吗?

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢!在startActivity(i) 之后调用finish() 是必要的,我猜这与它在触发意图后试图重新夺回焦点有关
  • 快乐编码:)
【解决方案2】:

考虑到您的 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();
    }
});

【讨论】:

  • 非常感谢您的建议
猜你喜欢
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多