【问题标题】:Java and Void return statementJava 和 Void 返回语句
【发布时间】:2014-08-13 18:18:53
【问题描述】:

我开发了一个 android 应用程序,我知道 return; 在 void return 方法中会中断流程。但是,android 应用程序并没有返回,而是继续执行该块旁边的代码

例如:

public static void displayImage(String img){

    if(img.contains("http")){
        loadImage(img);
        return;
    }
    Uri uri = Uri.parseUri(img); // even though it hit the return statement above, it continued to this block
    .....
}

即使执行了 return;,它也会继续调用该块旁边的方法。是我的编译问题吗?还是在调试时它是Android中Java的工作方式?我很困惑,请帮助我理解。

更新:该方法是静态方法,确切地说

详细解释

根据chooser api,我的 android 应用程序支持 Dropbox,我在MainActivity.java 中实现了以下内容

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == DBX_CHOOSER_REQUEST) {
        if (resultCode == Activity.RESULT_OK) {
            DbxChooser.Result result = new DbxChooser.Result(data);
            ..
            ContentHelper.displayImage(result.getData().toString());
        } else {
            // Failed or was cancelled by the user

现在在我的ContentHelper.java

public static void displayImage(String img){

        if(img.contains("http")){
            loadImage(img);
            return;
        }
        Uri uri = Uri.parseUri(img); // even though it hit the return statement above, it continued to this block
        .....
        //load some activity etc.,
    }

因为这个 displayImage 能够从 SD 卡加载图像,并且它提供的任何链接都具有 if 块和 return 语句。 (我知道我可以放if .. else 并在上面创作一个作品。但我的问题是为什么它没有在return; 中断)

谢谢。

【问题讨论】:

  • 您确定if 条件评估为真吗?
  • 如果调用return,该方法将停止执行。这一点也不例外。
  • 你确定img包含http吗???顺便说一句,java 将 100% 归还它。
  • 那么当img not 包含"http" 时,要么调试器向您显示与正在执行的代码不同的代码,要么再次调用该方法。如果您点击了return 语句,那么程序将不会继续执行以下语句。
  • 您设备上安装的代码可能与您在 Eclipse 中看到的代码不同。尝试清理、构建并重新安装应用程序。

标签: java android return


【解决方案1】:

由于代码运行的环境是在模拟器上或外部设备上,可能是eclipse中显示调试信息的代码与外部环境中实际运行的代码不一致。

清理、重建和重新安装应用程序肯定会解决问题。

【讨论】:

    猜你喜欢
    • 2011-01-03
    • 2020-01-18
    • 1970-01-01
    • 2012-06-07
    • 2015-05-03
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多