简体   繁体   English

为什么我在我的吸气剂上得到一个空指针

[英]Why I am getting a null pointer at my getter

Please give me a clue why I am getting a null pointer where I am getting the value of getlatitude and how I can fix it?? 请给我一个线索,为什么我在获取getlatitude的值时会得到一个空指针以及如何解决它?

Main Activity 主要活动

  @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()); 
}

On My fragment where I am getting the value 在我获得价值的片段上

  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();

Proximity 接近

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;
}

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mark/com.mark.activity.MainActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5021) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.fragment.MapFragment.onCreateView(MapFragment.java:113 java.lang.RuntimeException:无法启动活动ComponentInfo {com.mark / com.mark.activity.MainActivity}:android.app上的java.lang.NullPointerException。android.app上的ActivityThread.performLaunchActivity(ActivityThread.java:2195)。 android.app.ActivityThread.access $ 800(ActivityThread.java:135)的ActivityThread.handleLaunchActivity(ActivityThread.java:2245)android.os.Handler的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1196)。 android.os.Looper.loop(Looper.java:136)的dispatchMessage(Handler.java:102)android.app.ActivityThread.main(ActivityThread.java:5021)的java.lang.reflect.Method.invokeNative(Native)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:827)处java.lang.reflect.Method.invoke(Method.java:515)处com.android.internal.os.ZygoteInit .main(ZygoteInit.java:643)在dalvik.system.NativeStart.main(本机方法)由:com.fragment.MapFragment.onCreateView(MapFragment.java:113处的java.lang.NullPointerException ) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2239) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:554) at android.support.v7.app.AppCompatActivi )的android.support.v4.app.Fragment.performCreateView(Fragment.java:2239)的android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332)的android.support.v4.app.FragmentManagerImpl的。 android.support.v4.app上的moveFragmentToExpectedState(FragmentManager.java:1574)android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)上的FragmentManagerImpl.moveToState(FragmentManager.java:1641) .v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)位于android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200)位于android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java :2153)位于android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063)位于android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)位于android.support.v4.app。 android.support.v7.app.AppCompatActivi上的FragmentActivity.onStart(FragmentActivity.java:554) ty.onStart(AppCompatActivity.java:177) at com.mark.BaseActivityLocation.onStart(BaseActivityLocation.java:135) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174) at android.app.Activity.performStart(Activity.java:5437) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5021) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) ty.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) .app.ActivityThread.main(ActivityThread.java:5021)位于java.lang.reflect.Method.invokeNative(原生方法)位于java.lang.reflect.Method.invoke(Method.java:515)

In your fragment you have created an object p Proximity p = new Proximity(); 在您的片段中,您创建了一个对象p Proximity p = new Proximity(); But the member variable latitude (Assuming that it is an object) is not set. 但是未设置成员变量latitude (假设它是一个对象)。 ie latitude is null. 即纬度为空。 As per the logs, in MapFragment.java: line no. 113 根据日志,在MapFragment.java: line no. 113 MapFragment.java: line no. 113 you are trying to access it. MapFragment.java: line no. 113您正在尝试访问它。 I think it is the code to show Toast where p.getLatitude().toString() results in NullPointerException. 我认为这是显示Toast的代码,其中p.getLatitude().toString()导致NullPointerException。

You may have to pass Proximity instance to fragment either using Fragment.setArguments while adding the fragment or create a method in your fragment and access it from activity. 您可能需要在添加Fragment.setArguments时使用Fragment.setArgumentsProximity实例传递给片段,或者在片段中创建方法并从活动中访问它。 As the code for Proximity is not a posted I assume that lat and long are Objects not primitive data types. 由于没有发布用于Proximity的代码,因此我假设lat和long都不是原始数据类型的对象。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM