Java 为什么我的getter上有一个空指针

Java 为什么我的getter上有一个空指针,java,android,Java,Android,请给我一个线索,为什么我得到了一个空指针,我得到了getlatitude的值,以及我如何修复它 主要活动 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar)

请给我一个线索,为什么我得到了一个空指针,我得到了getlatitude的值,以及我如何修复它

主要活动

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        p = new Proximity();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);


        initLocationFetching(MainActivity.this); 
}

 @Override
    public void locationFetched(Location mLocal, Location oldLocation, String time, String locationProvider) {
        super.locationFetched(mLocal, oldLocation, time, locationProvider);
        p.setLatitude(mLocal.getLatitude());
        p.setLongitude(mLocal.getLongitude()); 
}
在我的碎片上,我得到了值

  Proximity p = new Proximity();

    public MapFragment(Context c, Activity a) { context = c; activity = a;}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_contact_us, container, false);

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            checkLocationPermission();
        }
        // Initializing
        MarkerPoints = new ArrayList<>();

        Toast.makeText(context, "Asdasdasdasdas"+p.getLatitude().toString(), Toast.LENGTH_SHORT).show();
java.lang.RuntimeException:无法启动活动 ComponentInfo{com.mark/com.mark.activity.MainActivity}: java.lang.NullPointerException 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 在android.app.ActivityThread.access$800(ActivityThread.java:135) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:136) 位于android.app.ActivityThread.main(ActivityThread.java:5021) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:827) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 在dalvik.system.NativeStart.main(本机方法) 原因:java.lang.NullPointerException 位于com.fragment.MapFragment.onCreateView(MapFragment.java:113) 位于android.support.v4.app.Fragment.performCreateView(Fragment.java:2239) 位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332) 位于android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574) 位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641) 位于android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794) 位于android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415) 在android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) 在android.support.v4.app.FragmentManagerImpl.OptimizandExecuteOps(FragmentManager.java:2153) 位于android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063) 位于android.support.v4.app.FragmentController.ExecutPendingActions(FragmentController.java:388) 位于android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:554) 位于android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) 位于com.mark.BaseActivityLocation.onStart(BaseActivityLocation.java:135) 位于android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174) 位于android.app.Activity.performStart(Activity.java:5437) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 在android.app.ActivityThread.access$800(ActivityThread.java:135) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:136) 位于android.app.ActivityThread.main(ActivityThread.java:5021) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515)


在片段中,您创建了一个对象p
approxity p=新的接近度()
但未设置成员变量
纬度
(假设它是一个对象)。i、 纬度为零。 根据日志,在
MapFragment.java:line no.113
中,您正在尝试访问它。我认为这是显示
Toast
的代码,其中
p.getLatitude().toString()
导致NullPointerException

在添加片段时,您可能必须使用
fragment.setArguments
approxity
实例传递给片段,或者在片段中创建一个方法并从活动访问它。 由于
approxity
的代码不是posted,我假设lat和long对象不是原始数据类型
public class Proximity {
    Double latitude;

    public Double getLatitude() {
        return latitude;
    }

    public void setLatitude(Double latitude) {
        this.latitude = latitude;
    }

    public Double getLongitude() {
        return longitude;
    }

    public void setLongitude(Double longitude) {
        this.longitude = longitude;
    }

    Double longitude;
}