我这样开始第二个活动:
Intent intentNotAuthorized = new Intent(SplashScreen.this, NotAthorized.class);
intentNotAuthorized.putExtra("message","dummy");
intentNotAuthorized.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intentNotAuthorized);
finish();
使用:回到第一个活动时
Intent intentSplash = new Intent(NotAthorized.this, SplashScreen.class);
intentSplash.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intentSplash);
finish();
创建第一个活动时,Oncreate被称为twise
答案 0 :(得分:0)
要点是,您不应该想要创建意图,返回回到第一个活动。
正确的方法是在第二个活动中调用 finish() 方法。
答案 1 :(得分:0)
选项1:
当您尝试使用意图中的值启动活动时,我已经观察到此问题。
下面是一个示例,其中Activity_A调用Activity_B并传递要在Activity_B中收集的意图中的值:
Intent intent = new Intent(this, activityB.class);
intent.putExtra("val1", someValue1);
intent.putExtra("val2", someValue2);
intent.putExtra("val3", someValue3);
this.StartActivity(intent);
finish();
清单文件:
在这种情况下,您可以在android:launchMode="singleInstance"
中设置android:launchModel="singleTop"
或AndroidManifest.xml
,Activity_B只会启动一次。希望这会有所帮助。
选项2:
我认为纳撒尼尔(Nathaniel)为您提供了很好的建议,可以将您的相机意图转移到onResume中。
但是,您需要区分一个onResume(它是您的第一次活动)和由于摄像机意图完成后您的活动恢复而正在发生的活动。如果不这样做,您将看到循环。
为此,您可以更改onActivityResult()来在Activity中设置一个名为isResumingFromCaptureIntent之类的成员变量。当resultCode与您用来启动相机意图的内容相匹配时,请在onActivityResult中将其设置为true。然后,在onResume中,检查isResumingFromCaptureIntent,如果为true,则表示您不需要启动摄影机意图,可以将其设置为false,然后继续进行您的活动需要做的任何事情。