因此,我正在Udemy的教程“完整的Android N开发人员课程”中学习,并试图制作关于天气应用程序的第86讲。
我从这里使用API https://openweathermap.org/current#cityid 并使用JSON来获取所需的数据。
当我输入正确的城市名称时,该应用程序工作正常,但是当输入错误或清空时,应用程序崩溃而没有捕获任何异常。
我不知道为什么它会崩溃,不知道在哪里看。所以我给你我写的所有代码。我试图在这里和那里实现if语句,试图找到它,但没有任何运气。
我想知道问题出在哪里以及如何解决它,以便应用程序不再崩溃。
提前致谢。
public class MainActivity extends AppCompatActivity {
EditText editText;
String city = "";
TextView textView;
public void getWeather (View view) {
try {
city = URLEncoder.encode(editText.getText().toString(), "UTF-8");
if (editText.getText().toString() == "") {
Toast.makeText(MainActivity.this, "Could not find weather", Toast.LENGTH_SHORT).show();
textView.setText("Please enter a city.");
} else {
DownloadTask task = new DownloadTask();
task.execute("http://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=c6ef169a79d84674ef7e1414301eb5c4");
}
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);
} catch (UnsupportedEncodingException e1) {
Toast.makeText(MainActivity.this, "UnsupportedEncodingException", Toast.LENGTH_SHORT).show();
}catch (Exception e) {
Toast.makeText(MainActivity.this, "General exception (getWeather)", Toast.LENGTH_SHORT).show();
}
}
public class DownloadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection)url.openConnection();
InputStream in = null;
in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
}
白衣染霜花
相关分类