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