为什么android studio在我从函数中删除null时出现错误?
我是android开发的新手。我正在使用asynctask方法调用我的函数。一切正常,但我不知道为什么函数会返回数据,为什么android studio会给出这个错误为什么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> {
> 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;。事实上,返回任何其他内容都是错误的。但您是对的,如果不需要返回值,则应该使用此选项。