lines
BeginObjects
lines
ObjectAlias xxx
lines
BeginKeyframe INT 12 ---->INT comes from sumKeys function
lines
EndObject
BeginAnotherObjects
...
错误:(31,5)错误:MainActivity.BackgroundTask不是抽象的,并且不会覆盖AsyncTask中的抽象方法doInBackground(Void ...)
错误:(39,24)错误:MainActivity.BackgroundTask中的doInBackground(Void ...)无法覆盖AsyncTask中的doInBackground(Params ...) 返回类型Void与String不兼容 Params,Result是类型变量: Params扩展了AsyncTask类中声明的Object 结果扩展了在AsyncTask类中声明的Object
错误:(38,9)错误:方法不会覆盖或实现超类型的方法
错误:(54,53)错误:不兼容的类型:字符串无法转换为Void
错误:任务':app:compileDebugJavaWithJavac'。>执行失败编译失败;有关详细信息,请参阅编译器错误输出。
答案 0 :(得分:2)
AsyncTask <Void, Void, String>
这里的最后一个类型是返回结果类型。
您的doInBackground
目前定义为Void
,而不是String
同样,您不能将StringBuilder
字符串结果作为Void
类型返回。
您可能会发现处理JSON的the other Android HTTP libraries更容易使用。
答案 1 :(得分:0)
AFAIK,当您在AsyncTask中定义Void时,您应该理解其含义。
doInBackground是一个带空参数的函数(第一个void),返回一个String(最后一个String)
protected String doInBackground ()
onProgressUpdate是一个带有空参数的函数(第二个空格)
protected void onProgressUpdate()
onPostExecute是一个带String参数的函数(来自步骤1的值)。
protected void onPostExecute(String)
答案 2 :(得分:0)
如果您无法清楚地了解AsyncTask中的功能,那么您最好尝试在AndroidStudio中生成该功能。 这是AndroidStudio生成的代码。
class BackgroundTask extends AsyncTask<Void,Void,String>
{
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected String doInBackground(Void... params) {
return null;
}
}
将您的代码与上述进行比较,我想您会得到答案。
答案 3 :(得分:0)
我在这里发现了两个错误 1.对于任务执行,
new BackgroundTask().execute(null);
2. doInBackground返回类型应与Result类型匹配(即字符串)
protected String doInBackground(Void... voids)
String json_string;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void getJSON (View view){
new BackgroundTask().execute(null);
}
class BackgroundTask extends AsyncTask <Void, Void, String>{
String json_url;
@Override
protected void onPreExecute() {
json_url = "http://androidtut.comli.com/json_get_data.php";
}
@Override
protected String doInBackground(Void... voids) {
try {
URL url = new URL(json_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
while ((json_string = bufferedReader.readLine()) != null) {
stringBuilder.append(json_string + "\n");
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
}
catch (MalformedURLException e){
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
TextView textView = (TextView) findViewById(R.id.textJSON);
textView.setText(result);
}
}
答案 4 :(得分:-1)
String json_string;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void getJSON (View view){
new AsynsTask(){
String json_url;
@Override
protected void onPreExecute() {
json_url = "http://androidtut.comli.com/json_get_data.php";
}
@Override
protected Void doInBackground(Void... voids) {
try {
URL url = new URL(json_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
while ((json_string = bufferedReader.readLine()) != null) {
stringBuilder.append(json_string + "\n");
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
}
catch (MalformedURLException e){
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
TextView textView = (TextView) findViewById(R.id.textJSON);
textView.setText(result);
}
}.execute();
}