Java 我的应用程序跳过启动意图并执行下一个代码行?
因此,我目前有以下几点:Java 我的应用程序跳过启动意图并执行下一个代码行?,java,android,Java,Android,因此,我目前有以下几点: public void addProject(View v) { String pn = ""; Bundle extras = new Bundle(); Intent i = new Intent(mMainContext, AddProject.class); mMainContext.startActivity(i, extras); if(extras.getString("projectName") != null
public void addProject(View v) {
String pn = "";
Bundle extras = new Bundle();
Intent i = new Intent(mMainContext, AddProject.class);
mMainContext.startActivity(i, extras);
if(extras.getString("projectName") != null) {
pn = extras.getString("projectName");
}
}
这只是一个示例,第一位是正确的,尽管if语句可能不正确,但这与该块无关
我注意到,如果我在新的intent、start activity和if语句上放置断点
Android似乎跳过了startActivity,进入了if语句
如果我删除If语句并再次运行它,它就会启动intent
所以我意识到它运行到addProject块的末尾,然后实际启动intent
为什么会这样?更重要的是,我如何阻止它这样做
预期结果如下:
1用户按下添加项目按钮
2意图启动,用户输入项目名称并按提交
3调用意图然后接收p名称,以便稍后在函数中使用
为什么会这样
startActivity是异步的。当它返回时,活动尚未启动
我怎样才能阻止它那样做
你不能
预期结果如下:1用户按Add Project按钮2 intent launched,用户输入项目名称并按submit 3调用intent,然后接收p名称以供以后在函数中使用
与使用片段相比,拥有单独的活动可能不是最好的计划
如果您希望使用活动,最自然的方法是:
使用startActivityForResult代替startActivity
让AddProject使用setResult创建一个结果意图,以传递回您的第一个活动
在ActivityResult上设置您的第一个活动覆盖,它可以接收该结果意图的副本并从中获取结果
请注意,在addProject返回后,这仍然会发生。然而,你最终会得到你的结果
Android文档没有很好地介绍这一点,但是。您必须使用onActivityResult来完成此任务 从您的主要活动中使用:StartActivityForresultsInplace 触觉的变化; 在AddProject活动中,当用户输入项目名称并按 按钮 意向i=新意向; i、 putExtraprojectName,UserInputExtFromEditText; setResultsRESULT_好的,我 在你的主要活动中 ActivityResultant请求代码、int-resultCode、@Nullable-Intent数据上的受保护无效{ pn=intent.getExtras.getStringExtraprojectName,; }
这样,您将找到您的结果您的意思是,当您单击addProject按钮时,它并不打算添加Project?请查看有关如何启动活动并返回结果的文档。它的工作方式与您的想法不太一样-活动不会像调用过程一样启动。见: