来自 URL 的信息解析 - 请求无效/未找到 TextView
Informationparsing from URL-Request not working / Didn't found TextView
我需要你的帮助。我想发送一个 URL 请求,得到响应并创建一个 JSON 对象。我的第一次尝试是完全错误的。现在找了个教程,重新尝试一下。
我的 Activity 看起来像:
public class Patienten extends Activity {
//Beacon Elemente
private String UUID;
private String Major;
private String Minor;
private TextView output;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_patienten);
output = (TextView) findViewById(R.id.output);
UpdateBeaconInformation();
Button cmdHit = (Button) findViewById(R.id.cmd_hit);
cmdHit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new JSONTask().execute("//http://kusber-web.de/JsonTest.txt");
}
});
setTitle(Surname + ", " + FirstName);
// output.setText(output.getText().toString() + "Gefundener Patient:\n" + "Name: " + Surname + ", " + FirstName + "\nGeb.-Dat: " + Birthdate);
}
然后我创建了一个新的 Java Class 并用它构建了一个 asyncTask。但是我无法访问 onPostExecute 中的 textview 输出来更新它。
public class JSONTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... urls) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
//http://kusber-web.de/JsonTest.txt
//http://nilsbenning.selfhost.me/PatientFinder.php?beacon_comID=5181f8a3-7354-46ac-b22d-952ec395ab06&beacon_major=12&beacon_minor=249
URL url = new URL(urls[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
return buffer.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
output.setText(result);
}
}
我的错误是什么?为什么我无法访问它?我在这里将其视为一种解决方案,但没有成功:
希望你现在能帮助我! :)
您可能想要解决此问题(删除前导斜线):
new JSONTask().execute("//http://kusber-web.de/JsonTest.txt");
在您的 JSONTask 中,您可以使用 Patienten.this
引用 Patienten 的成员。所以在 onPostExecute
你应该改变这个:
output.setText(result);
至:
Patienten.this.output.setText(result);
我需要你的帮助。我想发送一个 URL 请求,得到响应并创建一个 JSON 对象。我的第一次尝试是完全错误的。现在找了个教程,重新尝试一下。
我的 Activity 看起来像:
public class Patienten extends Activity {
//Beacon Elemente
private String UUID;
private String Major;
private String Minor;
private TextView output;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_patienten);
output = (TextView) findViewById(R.id.output);
UpdateBeaconInformation();
Button cmdHit = (Button) findViewById(R.id.cmd_hit);
cmdHit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new JSONTask().execute("//http://kusber-web.de/JsonTest.txt");
}
});
setTitle(Surname + ", " + FirstName);
// output.setText(output.getText().toString() + "Gefundener Patient:\n" + "Name: " + Surname + ", " + FirstName + "\nGeb.-Dat: " + Birthdate);
}
然后我创建了一个新的 Java Class 并用它构建了一个 asyncTask。但是我无法访问 onPostExecute 中的 textview 输出来更新它。
public class JSONTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... urls) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
//http://kusber-web.de/JsonTest.txt
//http://nilsbenning.selfhost.me/PatientFinder.php?beacon_comID=5181f8a3-7354-46ac-b22d-952ec395ab06&beacon_major=12&beacon_minor=249
URL url = new URL(urls[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
return buffer.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
output.setText(result);
}
} 我的错误是什么?为什么我无法访问它?我在这里将其视为一种解决方案,但没有成功:
希望你现在能帮助我! :)
您可能想要解决此问题(删除前导斜线):
new JSONTask().execute("//http://kusber-web.de/JsonTest.txt");
在您的 JSONTask 中,您可以使用 Patienten.this
引用 Patienten 的成员。所以在 onPostExecute
你应该改变这个:
output.setText(result);
至:
Patienten.this.output.setText(result);