Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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
为什么android studio在我从函数中删除null时出现错误?_Android_Android Activity_Android Asynctask - Fatal编程技术网

为什么android studio在我从函数中删除null时出现错误?

为什么android studio在我从函数中删除null时出现错误?,android,android-activity,android-asynctask,Android,Android Activity,Android Asynctask,我是android开发的新手。我正在使用asynctask方法调用我的函数。一切正常,但我不知道为什么函数会返回数据,为什么android studio会给出这个错误 > Error:(182, 9) error: missing return statement 当我删除返回空 这是代码,我希望你能理解我的问题所在 public class YourAsyncTask extends AsyncTask<String, String, String> {

我是android开发的新手。我正在使用asynctask方法调用我的函数。一切正常,但我不知道为什么函数会返回数据,为什么android studio会给出这个错误

> Error:(182, 9) error: missing return statement
当我删除返回空

这是代码,我希望你能理解我的问题所在

public class YourAsyncTask extends AsyncTask<String, String, String> {

        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... strings) {
            //Call getData function from here
            getData();
            return null;

        }

        @Override
        protected void onPostExecute(String lenghtOfFile) {
            // do stuff after posting data
        }
    }
签名中定义了返回值的所有函数都必须返回某些内容。这与C/C++不同

在此声明函数将返回一个字符串:

受保护的字符串doInBackgroundString。。。弦{

如果不想返回任何内容,则应按如下方式更改方法和类定义:

        public class YourAsyncTask extends AsyncTask<String, String, Void> { // <- Notice the change also here
        ...

        @Override
        protected void doInBackground(String... strings) {
            ...
        }
        ...
    }
protected String doInBackground(String...strings)
签名中定义了返回值的所有函数都必须返回某些内容。这与C/C++中的不同

在此声明函数将返回一个字符串:

受保护字符串doInBackgroundString…字符串{

如果不想返回任何内容,则应按如下方式更改方法和类定义:

        public class YourAsyncTask extends AsyncTask<String, String, Void> { // <- Notice the change also here
        ...

        @Override
        protected void doInBackground(String... strings) {
            ...
        }
        ...
    }
protected String doInBackground(String...strings)
您的方法签名

doInBackground实现的方法签名如下:

        public class YourAsyncTask extends AsyncTask<String, String, Void> { // <- Notice the change also here
        ...

        @Override
        protected void doInBackground(String... strings) {
            ...
        }
        ...
    }
protected String doInBackground(String...strings)
方法签名被分解为访问修饰符、返回类型、标识符和参数。实现doInBackground的返回类型为String

Android异步任务

国家:

异步任务由3种通用类型定义,称为Params、Progress和Result

这些是在扩展AsyncTask类时定义的,正如您已经完成的:

public class YourAsyncTask extends AsyncTask<String, String, String>
第三个参数是您的结果类型,正如您在这里指定的字符串。此类型是doInBackground实现必须返回的类型

这意味着您的doInBackGround实现必须返回String类型的值。返回null也是可以接受的,因为它对于任何对象数据类型都是有效的值。通过删除return null,您的方法不会返回任何产生您所看到的错误消息的值

可能有助于理解Java中方法的结构。

您的方法签名

doInBackground实现的方法签名如下:

        public class YourAsyncTask extends AsyncTask<String, String, Void> { // <- Notice the change also here
        ...

        @Override
        protected void doInBackground(String... strings) {
            ...
        }
        ...
    }
protected String doInBackground(String...strings)
方法签名被分解为访问修饰符、返回类型、标识符和参数。实现doInBackground的返回类型为String

Android异步任务

国家:

异步任务由3种通用类型定义,称为Params、Progress和Result

这些是在扩展AsyncTask类时定义的,正如您已经完成的:

public class YourAsyncTask extends AsyncTask<String, String, String>
第三个参数是您的结果类型,正如您在这里指定的字符串。此类型是doInBackground实现必须返回的类型

这意味着您的doInBackGround实现必须返回String类型的值。返回null也是可以接受的,因为它对于任何对象数据类型都是有效的值。通过删除return null,您的方法不会返回任何产生您所看到的错误消息的值

可能有助于理解Java中方法的结构。

在代码中:

YourAsyncTask extends AsyncTask<String, String, String>
您扩展了AsyncTask,这意味着:

异步任务使用的三种类型如下:

Params:执行时发送到任务的参数类型

进度:发布期间发布的进度单位的类型

背景计算

结果:结果的类型 背景计算

现在将所有类型声明为字符串,必须在“doInBackgroundString…strings”中返回string或null

如果您不想退货,请使用:

 public class YourAsyncTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... params) {
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
        }
    }
在代码中:

YourAsyncTask extends AsyncTask<String, String, String>
您扩展了AsyncTask,这意味着:

异步任务使用的三种类型如下:

Params:执行时发送到任务的参数类型

进度:发布期间发布的进度单位的类型

背景计算

结果:结果的类型 背景计算

现在将所有类型声明为字符串,必须在“doInBackgroundString…strings”中返回string或null

如果您不想退货,请使用:

 public class YourAsyncTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... params) {
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
        }
    }

此外,检查此情况,也请检查此,如果您想将C和C++加入其中,我认为应该注意,在C++中,不返回非空函数的值是未定义的行为,除非Mead也注意到,指定空格作为结果参数仍然需要返回状态语句,以便将C和C++插入到该参数中,我认为应该注意的是,C++中的非空函数不返回值是不确定的行为,除非Mead也注意到,指定空格作为结果参数仍然需要返回语句,使用空格作为返回值仍然需要返回null;事实上,返回任何其他都是错误。 '正确,如果不需要返回值,则应使用此选项。使用Void作为返回值仍然需要返回null;。事实上,返回任何其他内容都是错误的。但您是对的,如果不需要返回值,则应该使用此选项。