android:NullPointerException onResume()上的FragmentManagerImpl.moveToState(FragmentManager.java) [英] android: NullPointerException FragmentManagerImpl.moveToState(FragmentManager.java) on onResume()

查看:70
本文介绍了android:NullPointerException onResume()上的FragmentManagerImpl.moveToState(FragmentManager.java)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序工作正常,但是当我试图从导航抽屉中重新点击当前正在运行的片段时。我的应用程序崩溃了。它只发生在一个片段中。 MAP片段。我在onResume方法中得到了错误。

这里是我的代码

my app work fine but when i'm trying to reclick the current running fragment from navigation drawer. my app crashes. it only happens in one fragment. MAP fragment. i got the error in onResume method.
here is my code

package com.munawwar.sultan.NavDrawer;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.munawwar.sultan.R;

import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;

import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MapzFragment extends Fragment implements LocationListener {
private GoogleMap mMap;
private LocationManager locationManager;

View view;

public MapzFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    if (view != null) {
        ViewGroup parent = (ViewGroup) view.getParent();
        if (parent != null)
            parent.removeView(view);
    }
    try {
        view = inflater.inflate(R.layout.fragment_mapz, container, false);
    } catch (InflateException e) {
        /* map is already there, just return view as it is */
    }
    return view;
}

/*
 * RelativeLayout theLayout = (RelativeLayout) inflater.inflate(
 * R.layout.fragment_mapz, container, false); return theLayout; }
 */
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

} // ending on activity created

@Override
public void onResume() {
    super.onResume();
    setUpMapIfNeeded();
}

private void setUpMapIfNeeded() {
    if (mMap != null) {
        return;
    }
    mMap = ((MapFragment) getActivity().getFragmentManager()
            .findFragmentById(R.id.map)).getMap();

    // Enabling MyLocation Layer of Google Map
    mMap.setMyLocationEnabled(true);

    // Getting LocationManager object from System Service LOCATION_SERVICE
    locationManager = (LocationManager) getActivity().getSystemService(
            Context.LOCATION_SERVICE);

    // Creating a criteria object to retrieve provider
    Criteria criteria = new Criteria();

    // Getting the name of the best provider
    String provider = locationManager.getBestProvider(criteria, true);

    // provider = locationManager.getBestProvider(criteria, false);
    // Getting Current Location
    Location location = locationManager.getLastKnownLocation(provider);
    // ***************current location*******************
    if (location != null) {
        onLocationChanged(location);
    }
    // location update
    locationManager.requestLocationUpdates(provider, 2000, 0,
            (LocationListener) this);
    // ****************map*************************
    if (mMap == null) {
        return;
    }

    // Initialize map options. For example:
    // mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

    mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
    // ***********RADIO BUTTONS FOR CHANGING MAP************
    RadioGroup rgViews = (RadioGroup) getActivity().findViewById(
            R.id.rg_views);
    rgViews.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId == R.id.rb_hybrid) {
                mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            } else if (checkedId == R.id.rb_satellite) {
                mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
                mMap.setTrafficEnabled(true);
            } else if (checkedId == R.id.rb_terrain) {
                mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
                mMap.setTrafficEnabled(true);
            }
        }
    });

}

// *********on location listener implemented functions
@Override
public void onProviderDisabled(String provider) {
    Toast.makeText(MapzFragment.this.getActivity(),
            "Disabled provider " + provider, Toast.LENGTH_SHORT).show();
}

@Override
public void onProviderEnabled(String provider) {
    Toast.makeText(MapzFragment.this.getActivity(),
            "Enabled new provider " + provider, Toast.LENGTH_SHORT).show();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub
}

@Override
public void onLocationChanged(Location location) {

    // Getting latitude of the current location
    double latitude = location.getLatitude();

    // Getting longitude of the current location
    double longitude = location.getLongitude();

    // Creating a LatLng object for the current location
    LatLng latLng = new LatLng(latitude, longitude);

    // Showing the current location in Google Map
    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));

    // Zoom in the Google Map
    mMap.animateCamera(CameraUpdateFactory.zoomTo(15));

}


@Override
public void onDestroyView() {

    Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
    FragmentTransaction ft = getActivity().getFragmentManager()
            .beginTransaction();
    ft.remove(fragment).commit();
    super.onDestroyView();
}

}



这是我得到的错误.......... .................................................. .................................................. ...................................


And this is the error i got.................................................................................................................................................

12-15 01:25:10.004: E/AndroidRuntime(24087): FATAL EXCEPTION: main
12-15 01:25:10.004: E/AndroidRuntime(24087): java.lang.NullPointerException
12-15 01:25:10.004: E/AndroidRuntime(24087):    at com.munawwar.sultan.NavDrawer.MapzFragment.setUpMapIfNeeded(MapzFragment.java:127)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at com.munawwar.sultan.NavDrawer.MapzFragment.onResume(MapzFragment.java:68)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:874)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at android.app.BackStackRecord.run(BackStackRecord.java:635)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at  android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at android.os.Handler.handleCallback(Handler.java:615)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at android.os.Handler.dispatchMessage(Handler.java:92)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at android.os.Looper.loop(Looper.java:153)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at android.app.ActivityThread.main(ActivityThread.java:4987)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at java.lang.reflect.Method.invokeNative(Native Method)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at java.lang.reflect.Method.invoke(Method.java:511)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
12-15 01:25:10.004: E/AndroidRuntime(24087):    at dalvik.system.NativeStart.main(Native Method)

推荐答案

1.run(FragmentManager.java:426)
12-15 01:25:10.004:E / AndroidRuntime(24087):at android.os.Handler .handleCallback(Handler.java:615)
12-15 01:25:10.004:E / AndroidRuntime(24087):在android.os.Handler.dispatchMessage(Handler.java:92)
12- 15 01:25:10.004:E / AndroidRuntime(24087):在android.os.Looper.loop(Looper.java:153)
12-15 01:25:10.004:E / AndroidRuntime(24087):at android.app.ActivityThread.main(ActivityThread.java:4987)
12-15 01:25:10.004:E / AndroidRuntime(24087):at java.lang.reflect.Method.invokeNative(Native Method)
12-15 01:25:10.004:E / AndroidRuntime(24087):at java.lang.reflect.Method.invoke(Me thod.java:511)
12-15 01:25:10.004:E / AndroidRuntime(24087):at com.android.internal.os.ZygoteInit
1.run(FragmentManager.java:426) 12-15 01:25:10.004: E/AndroidRuntime(24087): at android.os.Handler.handleCallback(Handler.java:615) 12-15 01:25:10.004: E/AndroidRuntime(24087): at android.os.Handler.dispatchMessage(Handler.java:92) 12-15 01:25:10.004: E/AndroidRuntime(24087): at android.os.Looper.loop(Looper.java:153) 12-15 01:25:10.004: E/AndroidRuntime(24087): at android.app.ActivityThread.main(ActivityThread.java:4987) 12-15 01:25:10.004: E/AndroidRuntime(24087): at java.lang.reflect.Method.invokeNative(Native Method) 12-15 01:25:10.004: E/AndroidRuntime(24087): at java.lang.reflect.Method.invoke(Method.java:511) 12-15 01:25:10.004: E/AndroidRuntime(24087): at com.android.internal.os.ZygoteInit


MethodAndArgsCaller.run (ZygoteInit.java:821)
12-15 01:25:10.004:E / AndroidRuntime(24087):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
12-15 01:25:10.004:E / AndroidRuntime(24087):at dalvik.system.NativeStart.main(Native Method)
MethodAndArgsCaller.run(ZygoteInit.java:821) 12-15 01:25:10.004: E/AndroidRuntime(24087): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 12-15 01:25:10.004: E/AndroidRuntime(24087): at dalvik.system.NativeStart.main(Native Method)


这篇关于android:NullPointerException onResume()上的FragmentManagerImpl.moveToState(FragmentManager.java)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆