Asd*_*tes 2 android google-maps fragment
我在片段中加载谷歌地图时遇到问题.一切都从一个启动活动"ViatgeDetallViewActivity"的回收器视图适配器开始:
Context context = mActivity.getApplicationContext();
Intent intent = new Intent(context, ViatgeDetallViewActivity.class);
holder.mViatge.getId());
intent.putExtra("desc",p.getDesc());
intent.putExtra("location",p.getLocation());
mActivity.startActivityForResult(intent,ACTIVITY_View);
Run Code Online (Sandbox Code Playgroud)
这是我的DetallViewActivity:
public class ViatgeDetallViewActivity extends AppCompatActivity {
ViatgeDetallViewFragment fragment;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
String s = getIntent().getStringExtra("desc");
Location l = getIntent().getParcelableExtra("location");
Log.d("myTag", "estoy en el oncreate de detallviewActivity pasando pro extras" + s );
}
fragment = new ViatgeDetallViewFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.activity_fragment_view, fragment)
.commit();
getFragmentManager().beginTransaction().add(R.id.activity_fragment_view, fragment).commit();
}
}
Run Code Online (Sandbox Code Playgroud)
我的ViatgeDetallViewFragment是:
public class ViatgeDetallViewFragment extends Fragment implements OnMapReadyCallback {
private GoogleMap mMap;
private Marker mMarcadorActual;
public ViatgeDetallViewFragment() {
}
....
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_view, container, false);
SupportMapFragment mapFragment =
(SupportMapFragment)
getChildFragmentManager().findFragmentById(R.id.fragment_view_map);
mapFragment.getMapAsync(this);
return rootView;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
//ask for permissions..
mMap.setMyLocationEnabled(true);
LatLng sydney = new LatLng(-34, 151);
mMarcadorActual = mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
}
Run Code Online (Sandbox Code Playgroud)
布局是,Activity_view:
<Linear ...
<android.support.v7.widget.Toolbar
android:id="@+id/tlbMenuView"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
/>
<FrameLayout
android:id="@+id/activity_fragment_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
Run Code Online (Sandbox Code Playgroud)
fragment_view:
<LinearLayout android:id="@+id/layout_fragment_view" xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
>
..
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fragment_view_map"
class="com.google.android.gms.maps.MapFragment"></fragment>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
当我尝试启动"ViatgeDetallActivity"时出现问题,我在日志中得到了这个:
致命异常:主进程:com.example.usuari.myapplication3,PID:6390 java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.usuari.myapplication3/com.example.usuari.myapplication3.ViatgeDetallViewActivity}:java. lang.NullPointerException:尝试在android.app.ActivityThread上的空对象引用上调用虚方法'void com.google.android.gms.maps.SupportMapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)'.在Android.app.ActivityThread.access $ 1100(ActivityThread.java:222)上的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350)上的performLaunchActivity(ActivityThread.java:3254)在android.app.ActivityThread $ H.handleMessage( ActivityThread.java:1795)android.app.Handler.dispatchMessage(Handler.java:102)android.app.Looper.loop(Looper.java:158)android.app.ActivityThread.main(ActivityThread.java:7229) )在com.android.internal.os.ZygoteInit $ MethodAndArgsC的java.lang.reflect.Method.invoke(Native Method)中 aller.run(ZygoteInit.java:1230)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)引起:java.lang.NullPointerException:尝试调用虚方法'void com.google.android .sms.maps.SupportMapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)'在android.support的com.example.usuari.myapplication3.ViatgeDetallViewFragment.onCreateView(ViatgeDetallViewFragment.java:82)上的空对象引用上.s4.app.Fragment.performCreateView(Fragment.java:2074)位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)的android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java) :1286)在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:758)android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1671)android.support.v4.app上的android.support.v4.app.BackStackRecord.run(BackStackRecord.java:758). FragmentController.execPendingActions(FragmentController.java:388)在android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:619)在android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1265)的android.app.A活动中的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3217)的android.app.Activity.performStart(Activity.java:6915). Activity.Thread.handleLaunchActivity(ActivityThread.java:3350)在android.app.AcessTacread $ 1100(ActivityThread.java:222)android.app.AandThread $ H.handleMessage(ActivityThread.java:1795)android.O. dispatchMessage(Handler.java:102)位于android.app.Looper.loop(Looper.java:158)的android.app.ActivityThread.main(ActivityThread.java:7229),位于java.lang.reflect.Method.invoke(Native方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)03-24 02:55:53.871 6390-7362/com.example.usuari.myapplication3 W/DynamiteModule:找不到com.google.android.gms.googlecertificates的本地模块描述符类.03-24 02:55:53.881 6390-7362/com.example.usuari.myapplication3 I/DynamiteModule:考虑本地模块com.google.android.gms.googlecertificates:0和远程模块com.google.android.gms.googlecertificates: 2 03-24 02:55:53.881 6390-7362/com.example.usuari.myapplication3 I/DynamiteModule:com.google.android.gms.googlecertificates的选定远程版本,版本
= 2 03-24 02:55:53.881 6390-7362/com.example.usuari.myapplication3 W/ResourcesManager:getTopLevelResources:/data/user/0/com.google.android.gms/app_chimera/m/00000005/DynamiteModulesA_GmsCore_prodmnc_alldpi_release. apk/1.0在com.example.usuari.myapplication3中运行comrc包com.example.usuari.myapplication3 03-24 02:55:53.891 6390-7362/com.example.usuari.myapplication3 D/ResourcesManager:对于用户0新的叠加层取得Null 03-24 02:55:53.891 6390-7362/com.example.usuari.myapplication3 W/ResourcesManager:getTopLevelResources:/data/user/0/com.google.android.gms/app_chimera/m/00000005/DynamiteModulesA_GmsCore_prodmnc_alldpi_release. apk/1.0在com.example.usuari.myapplication3 comrc中运行com.example.usuari.myapplication3
你mapFragment是空的.试试这个:
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
MapFragment mapFragment = (MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.fragment_view_map);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18652 次 |
| 最近记录: |