android - 谷歌地图给了我空指针异常,而它不应该
问题描述
在我的 android 应用程序中,当我从RecyclerView中选择第一个元素(列表中的任何一个)时,我得到了一些位置,它可以正常工作并且给出位置,但是当我回去选择另一个元素时,它给了我NPE。
第一个例子:
- 我选择第二个元素(它有效)。
- 我回去选择另一个。
- 我选择第一个元素(给出 NPE)。
第二个例子:
我选择第一个元素(它有效)。
我回去选择另一个。
我选择第二个元素(给出 NPE)。
我的代码:
private SupportMapFragment mapFragment;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_sales_item, container, false);
if(getArguments()!=null)
{
saleID = getArguments().getString("saleID");
}
initIDs();
retroFit();
maps();
return view;
}
public void retroFit(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ServiceConstants.URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RoyalAPI royalAPI = retrofit.create(RoyalAPI.class);
Call<SaleItemResponse> connection = royalAPI.getSaleItem(saleID);
connection.enqueue(new Callback<SaleItemResponse>() {
@Override
public void onResponse(Call<SaleItemResponse> call, Response<SaleItemResponse> response) {
List<SaleItem> posts = response.body().getData();
latitude = posts.get(0).getLatitude();
longitude = posts.get(0).getLongitude();
}
@Override
public void onFailure(Call<SaleItemResponse> call, Throwable t) {
}
});
}
private void map(){
if (mapFragment == null) {
mapFragment = SupportMapFragment.newInstance();
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
LatLng latLng = new LatLng(Double.parseDouble(latitude), Double.parseDouble(longitude));
googleMap.addMarker(new MarkerOptions().position(latLng)
.title(""));
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
}
});
}
// R.id.map is a FrameLayout, not a Fragment
getChildFragmentManager().beginTransaction().replace(R.id.map_sales, mapFragment).commit();
}
.
public class SaleItemResponse {
@SerializedName("data")
private List<SaleItem> mData;
@SerializedName("state")
private Long mState;
public List<SaleItem> getData() {
return mData;
}
public void setData(List<SaleItem> data) {
mData = data;
}
public Long getState() {
return mState;
}
public void setState(Long state) {
mState = state;
}
}
.
public class SaleItem {
@SerializedName("latitude")
private String mLatitude;
@SerializedName("longitude")
public String getLatitude() {
return mLatitude;
}
public void setLatitude(String latitude) {
mLatitude = latitude;
}
public String getLongitude() {
return mLongitude;
}
public void setLongitude(String longitude) {
mLongitude = longitude;
}
}
解决方案
推荐阅读
- python - 如何在导入的 excel 列中使用 pandas 和 datetime 计算重复日期的数量?
- react-native - 尝试使用 React Native Keychain 时出错
- r - 如何调整 geom_boxplot() 中每个方面的 y 限制?
- python - 使用带有后缀的现有列名应用 pandas pivot
- c# - C#如何反序列化一个列表
使用 Newtonsoft.Json 的条件 - php - 首先显示具有确定值的数组元素
- javascript - 带有或不带有用于保存 textarea 内容的保存按钮
- c# - 在同一个类中使用不同的 Serilog 接收器用于不同的目的 + 依赖注入
- reactjs - 对于 react-bootstrap-table2,您如何将所有复选框项目默认为选中?
- c++ - 部分定义/别名模板模板参数