Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的应用程序跳过启动意图并执行下一个代码行?_Java_Android - Fatal编程技术网

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?请查看有关如何启动活动并返回结果的文档。它的工作方式与您的想法不太一样-活动不会像调用过程一样启动。见: