【发布时间】:2023-03-19 16:08:01
【问题描述】:
我有一个带有底栏的 main_activity。我正在使用这个底部栏在片段之间导航。但是,有一个片段不能通过底部栏直接导航。它必须可以通过 MapView 和 onInfoWindowClick 从片段访问。但是,每当我使用 infoWindow 时,应用程序就会崩溃。这是我的代码
public void onMapReady(GoogleMap googleMap) {
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.tesla);
mMap=googleMap;
for (Location item : array_list) {
String _title = item.getLocation_name();
String _snippet = item.getLocation_address();
LatLng _latLng = new LatLng(item.getLatitude(), item.getLongitude());
final MarkerOptions mMarkerOptions = new MarkerOptions().icon(icon);
mMarkerOptions.position(_latLng).title(_title).snippet(_snippet).flat(true);
Marker marker = mMap.addMarker(mMarkerOptions);
mMarkerHashMap.put(marker, item);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(marker.getPosition())
.zoom(12.0f)
.build();
mMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPosition));
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
LocationDetailFragment detailedlocation = new LocationDetailFragment();
detailedlocation.LOCATION = mMarkerHashMap.get(marker);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content, detailedlocation);
ft.addToBackStack(null);
ft.commit();
}
});
}
--------- beginning of crash 04-23 19:41:11.380 2573-2573/com.teslaqubitsins.fasih.teslahcm E/AndroidRuntime: FATAL例外:主要 进程:com.teslaqubitsins.fasih.teslahcm,PID:2573 java.lang.NullPointerException:尝试调用虚拟方法 'android.view.View android.view.View.findViewById(int)' 为空 对象引用 在 com.teslaqubitsins.fasih.teslahcm.LocationDetailFragment.onCreateView(LocationDetailFragment.java:35) 在 android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) 在 android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) 在 android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758) 在 android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) 在 android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) 在 android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) 在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013) 在 android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 04-23 19:41:11.383 1564-1957/system_process W/ActivityManager:强制 完成活动 com.teslaqubitsins.fasih.teslahcm/.MainActivity 04-23 19:41:11.414 1296-1653/? E/SurfaceFlinger: ro.sf.lcd_density 必须定义为构建属性
[ 04-23 19:41:11.456 1564: 3367 D/ ] HostConnection::get() New Host Connection established 0x87cb5680, tid 3367 04-2319:41:11.457 1296-1653/? D/gralloc_ranchu:gralloc_alloc:格式 1 和 用法 0x900 暗示创建主机颜色缓冲区 04-23 19:41:11.457 1564-3367/system_process I/OpenGLRenderer:初始化的 EGL,版本 1.4 04-23 19:41:11.458 1564-3367/system_process D/OpenGLRenderer:交换行为 1 04-23 19:41:11.458 1564-3367/system_process W/OpenGLRenderer:无法选择配置 EGL_SWAP_BEHAVIOR_PRESERVED,重试不... 04-23 19:41:11.458 1564-3367/system_process D/OpenGLRenderer:交换行为 0 04-23 19:41:11.462 1296-1653/? D/gralloc_ranchu:gralloc_alloc:格式 1 和 用法 0x900 暗示创建主机颜色缓冲区 04-23 19:41:11.476 1296-1653/? D/gralloc_ranchu:gralloc_alloc:格式1和用法0x900 暗示创建主机颜色缓冲区 04-23 19:41:11.892 1564-1591/system_process W/ActivityManager:活动暂停超时 活动记录{34a233 u0 com.teslaqubitsins.fasih.teslahcm/.MainActivity t141 f} 04-23 19:41:11.921 1296-1962/? D/gralloc_ranchu:gralloc_alloc:格式 1 和 用法 0x900 暗示创建主机颜色缓冲区 04-23 19:41:11.940 1296-1962/? D/gralloc_ranchu:gralloc_alloc:格式1和用法0x900 暗示创建主机颜色缓冲区 04-23 19:41:11.951 1296-1962/? D/gralloc_ranchu:gralloc_alloc:格式 1 和用法 0x900 暗示 创建主机颜色缓冲区 04-23 19:41:11.968 1296-1426/? D/PermissionCache:检查 android.permission.READ_FRAME_BUFFER uid=1000 => 授予 (252 us) 04-23 19:41:12.025 1296-1426/? D/gralloc_ranchu:gralloc_alloc:格式1和用法0x333暗示 创建主机颜色缓冲区 块引用
package com.teslaqubitsins.fasih.teslahcm;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class LocationDetailFragment extends Fragment {
public static Location LOCATION;
TextView _campusName;
TextView _campusAddress;
public LocationDetailFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_location_detail, container, false);
_campusName = (TextView) getView().findViewById(R.id.campus_name);
_campusAddress = (TextView) getView().findViewById(R.id.campus_address);
_campusName.setText(LOCATION.getLocation_name());
_campusAddress.setText(LOCATION.getLocation_address());
return view;
}
public void onClick_call(View view) {
dialPhoneNumber(LOCATION.getLocation_phone());
}
public void dialPhoneNumber(String phoneNumber) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + phoneNumber));
if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivity(intent);
}
}
}
04-23 19:58:11.735 6856-6856/com.teslaqubitsins.fasih.teslahcm E/AndroidRuntime: 致命异常: main 进程:com.teslaqubitsins.fasih.teslahcm,PID:6856 java.lang.NullPointerException:尝试调用虚拟方法 'android.view.View android.view.View.findViewById(int)' 为空 对象引用 在 com.teslaqubitsins.fasih.teslahcm.LocationDetailFragment.onCreateView(LocationDetailFragment.java:35) 在 android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) 在 android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) 在 android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758) 在 android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) 在 android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) 在 android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) 在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013) 在 android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 04-23 19:58:12.507 2006-2282/com.google.android.gms.persistent W/GCoreFlp: getLastLocation() 04-23 19:58:42.534 没有返回位置 2134-2214/com.google.android.googlequicksearchbox:搜索 W/GmsLocationProvider:删除位置更新时出错:16
【问题讨论】:
-
发布崩溃日志....
-
@rafsanahmad007。请检查。
-
也发布您的
LocationDetailFragment..因为该类的异常关注 -
@rafsanahmad007。请立即检查。
-
@rafsanahmad007。另请注意,我正在从
ContactFragment扩展的Fragment类中调用onInfoWindowClick。我正在尝试从ContactFragment拨打LocationDetailFragment
标签: java android google-maps android-fragments