我只是在听讲座:(这是错误消息
E/Android运行时: 致命异常: 主进程: 8893 java.lang.空指针异常: 尝试调用虚拟方法 '布尔 java.lang.字符串.contains(java.lang.CharSequence)'.java.java.java 在空对象引用上android.os.AsyncTask.access$900(AsyncTask.java:192) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.looper.looper.loop(Looper.java:214) at android.app.活动线程.main(ActivityThread.java:7356) at java.lang.reflect.method.invoke(本机方法) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(运行时输入.java:492) at com.android.internal.os.ZygoteInit.main(受精卵初始化.java:930)
这是发生错误的部分,我写在那里。
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s.contains("Error: Not found city")){
pd.dismiss();
return;
}
Gson gson = new Gson();
Type mType = new TypeToken<OpenWeatherMap>(){}.getType();
openWeatherMap = gson.fromJson(s, mType);
pd.dismiss();
txtCity.setText(String.format("%s,%s",openWeatherMap.getName(),openWeatherMap.getSys().getCountry()));
txtLastUpdate.setText(String.format("Last Updated: %s", Common.getDateNow()));
txtDescription.setText(String.format("%s",openWeatherMap.getWeather().get(0).getDescription()));
txtHumidity.setText(String.format("%d%%",openWeatherMap.getMain().getHumidity()));
txtTime.setText(String.format("%s/%s",Common.unixTimeStampToDateTime(openWeatherMap.getSys().getSunrise()), Common.unixTimeStampToDateTime(openWeatherMap.getSys().getSunset())));
txtCelsius.setText(String.format("%.2f °C",openWeatherMap.getMain().getTemp()));
Picasso.with(MainActivity.this)
.load(Common.getImage(openWeatherMap.getWeather().get(0).getIcon()))
.into(imageView);
}
如果你需要帮助,这是全部的代码
package com.example.weather3;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.weather3.Common.Common;
import com.example.weather3.Helper.Helper;
import com.example.weather3.Model.OpenWeatherMap;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.squareup.picasso.Picasso;
import java.lang.reflect.Type;
public class MainActivity extends AppCompatActivity implements LocationListener {
TextView txtCity, txtLastUpdate, txtDescription, txtHumidity, txtTime, txtCelsius;
ImageView imageView;
LocationManager locationManager;
String provider;
static double lat, lng;
OpenWeatherMap openWeatherMap = new OpenWeatherMap();
int MY_PERMISSION = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Control
txtCity = (TextView) findViewById(R.id.txtCity);
txtLastUpdate = (TextView) findViewById(R.id.txtLastUpdate);
txtDescription = (TextView) findViewById(R.id.txtDescription);
txtHumidity = (TextView) findViewById(R.id.txtHumidity);
txtTime = (TextView) findViewById(R.id.txtTime);
txtCelsius = (TextView) findViewById(R.id.txtCelsius);
imageView = (ImageView) findViewById(R.id.imageView);
//Get Coordinates
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
provider = locationManager.getBestProvider(new Criteria(), false);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.SYSTEM_ALERT_WINDOW,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, MY_PERMISSION);
}
Location location = locationManager.getLastKnownLocation(provider);
if (location == null) {
Log.e("TAG", "No Location");
}
}
protected void onPause() {
super.onPause();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.SYSTEM_ALERT_WINDOW,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, MY_PERMISSION);
}
locationManager.removeUpdates(this);
}
protected void onResume() {
super.onResume();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.SYSTEM_ALERT_WINDOW,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, MY_PERMISSION);
}
locationManager.requestLocationUpdates(provider, 400, 1, this);
}
@Override
public void onLocationChanged(Location location) {
lat=location.getLatitude();
lng=location.getLongitude();
new GetWeather().execute(Common.apiRequest(String.valueOf(lat), String.valueOf(lng)));
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
private class GetWeather extends AsyncTask<String, Void, String> {
ProgressDialog pd = new ProgressDialog(MainActivity.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
pd.setTitle("Please wait...");
pd.show();
}
@Override
protected String doInBackground(String... params) {
String stream = null;
String urlString = params[0];
Helper http = new Helper();
stream = http.getHTTPData(urlString);
return stream;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s.contains("Error: Not found city")){
pd.dismiss();
return;
}
Gson gson = new Gson();
Type mType = new TypeToken<OpenWeatherMap>(){}.getType();
openWeatherMap = gson.fromJson(s, mType);
pd.dismiss();
txtCity.setText(String.format("%s,%s",openWeatherMap.getName(),openWeatherMap.getSys().getCountry()));
txtLastUpdate.setText(String.format("Last Updated: %s", Common.getDateNow()));
txtDescription.setText(String.format("%s",openWeatherMap.getWeather().get(0).getDescription()));
txtHumidity.setText(String.format("%d%%",openWeatherMap.getMain().getHumidity()));
txtTime.setText(String.format("%s/%s",Common.unixTimeStampToDateTime(openWeatherMap.getSys().getSunrise()), Common.unixTimeStampToDateTime(openWeatherMap.getSys().getSunset())));
txtCelsius.setText(String.format("%.2f °C",openWeatherMap.getMain().getTemp()));
Picasso.with(MainActivity.this)
.load(Common.getImage(openWeatherMap.getWeather().get(0).getIcon()))
.into(imageView);
}
}
}
错误:
java.lang.NullPointerException:尝试对位于
的空对象引用调用虚拟方法“boolean java.lang.String.contains(java.lang.CharSequence)”
s
为空
,此处为:
if(s.contains("Error: Not found city")){
< code>s变量从下面的< code>doInBackground方法传递给< code>onPostExecute:
@Override
protected String doInBackground(String... params) {
String stream = null;
String urlString = params[0];
Helper http = new Helper();
stream = http.getHTTPData(urlString);
return stream;
}
所以这意味着stream
为空。
含义stream=http。获取HTTPData(urlString)
在某种程度上不起作用/返回null
。
当我在Android手机上调试应用程序时,我绝对没有遇到任何错误,但在AVD上,我一开始就得到了一个NullPointerException()。我的Android设备在22 API的Lollipop(5.1.1)上运行,我的AVD在28 API的Pie(9.0)上运行。我在gradle中将最小SDK设置为21,编译SDK设置为28。 这是错误: E/AndroidRuntime:致命异常:主进程
问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt
所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。
列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。
我能够成功地打电话给邮递员: /mfp/api/az/v1/token和 /mfpadmin/management-apis/2.0/runtimes/mfp/applications 我正在获取从/mfp/api/az/v1/token接收的承载令牌,并将其添加到/mfp/applications的授权标头中。 我收到了来自两者的200个响应,并从每个API中获取了预期的信息。 然后,我选择从P
我一直在使用声纳3.2 同样的配置,当我升级到SonarQube 4.4时 声纳项目属性: 请帮助整理这些例外 问候, KP