方法调用在两者之间终止并跳转到下一个方法调用

Posted

技术标签:

【中文标题】方法调用在两者之间终止并跳转到下一个方法调用【英文标题】:Method call terminates in between and jumps to the next method call 【发布时间】:2012-08-22 17:34:25 【问题描述】:

我正在尝试在 android 中构建一个记事本应用程序。我在这种情况下,当用户选择创建新文件同时仍在处理文件时,应用程序应首先要求保存,然后重新启动 MainActivity 以创建新文件。

所以,基本上,顺序如下:

->处理当前文件 ->点击新文件 ->保存对话框 ->重启MainActivity。

为此,我一直在使用一种名为 new file 的方法,如下所示:

public void new_file()
    
        save_file();
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    

这里的问题是,每次我运行应用程序并输入这部分代码时,都会弹出对话框并立即创建一个新文件。

我想知道如何首先让 Activity 完成 save_file() 方法调用,然后 Activity 重新启动。

提前致谢

【问题讨论】:

【参考方案1】:

看起来它工作正常,但看不到 safe_file() 代码(顺便说一句:考虑切换到更标准的函数命名约定)很难确定,但请注意对话框是 异步,所以你无法启动对话框并期望所有进一步的代码等待对话框关闭。我假设您在 safe_file() 方法中弹出对话框,因此您应该在完成保存后回调以从那里开始新活动,或者您应该在对话框单击侦听器中执行此操作。

【讨论】:

对!那么我的代码中存在故障。是的,我在 save_file() 中使用了一个对话框。好吧,我不能从 save_file() 开始新的活动,因为我不必每次保存文件时都这样做,所以,我必须想一个替代方案。无论如何,我不知道对话框是异步的,所以现在我知道了,我必须想一个替代方案。 如果您的对话监听器在活动的内部类中,那么只需从那里调用您的活动方法。 我的活动监听器在我的 MainActivity 中。 MainActivity -> save_file() -> 监听器 如果我猜对了,那么这应该可以:用户点击“new”,你调用 new_file(),然后调用 save_file(),然后调用 save_file(),嗯...保存然后它调用 jump_to_main_activity()。 你说得对,只是我没有一个名为 jump_to_main_activity() 的方法,我只是重新启动主要活动【参考方案2】:

使用 AlertDialog 机制的Negative、Positive 和Neutral 按钮来检测用户何时退出对话框。然后,使用 OnClickListener 来决定单击了哪个按钮,然后才重新启动 Activity。比如:

    显示对话框 等待其中一个按钮被点击 单击按钮时重新启动活动,因为这意味着用户正在退出对话框。

【讨论】:

因为我需要一个文本字段来输入文件名,所以我使用的是自定义对话框,我认为我仍然无法使用 Negative、Positive 和 Neutral 按钮。有可能吗? 您也可以使用 AlertDialog 来获取输入。我以前做过。 是的,刚刚发现。无论如何,这不是问题。由于对话框是异步的,所以无论我使用什么对话框,我都会再次陷入同一个坑。我必须找到替代方案。 并非如此。如果删除代码以将主要活动从 new_file() 重新启动到 onClickListeners() 之一,它只会在单击按钮时执行。因此,保存文件对话框的退出将是重新启动 Activity 的唯一方法。 暂时解决了这个问题。但是,你的旗帜想法听起来也不错,也会尝试一下。非常感谢人:D

以上是关于方法调用在两者之间终止并跳转到下一个方法调用的主要内容,如果未能解决你的问题,请参考以下文章

php把值传入到下一个跳转的页面用那种方法

怎么让android的activity跳转到下一个activity时让前一个activity销毁

ExtJS Window.close()之后,关闭所在页面并跳转到另一个url

申请中文域名并跳转到个人网站(多种方法的尝试)

在PopupWindow弹窗中使用Glide播放GIF完毕后关闭弹窗并跳转Activity

js获取url 中的值,并跳转相应页面