Java和Void返回语句

时间:2014-08-13 18:18:54

标签: java android return

我开发了一个Android应用程序,我知道在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在调试时的工作方式?我很难过请帮助我理解。

更新:该方法是一种静态方法,准确无误

详细说明

我对我的Android应用程序有dropbox支持,根据chooser api我在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 .. else并创建一个工作。但我的问题是为什么它没有在return;处突破

感谢。

1 个答案:

答案 0 :(得分:0)

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

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