为什么 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.java
和 Manifest.xml
另外为什么在new Intent(getApplicationContext(), ...);
中使用getApplicationContext()
?如果你在 Activity
中调用它,你应该使用 ActivityName.this
我有一个有两个活动的 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.java
和 Manifest.xml
另外为什么在new Intent(getApplicationContext(), ...);
中使用getApplicationContext()
?如果你在 Activity
中调用它,你应该使用 ActivityName.this