[英]Why I am getting a null pointer at my getter
请给我一个线索,为什么我在获取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();
接近
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:无法启动活动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 )的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)位于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)
在您的片段中,您创建了一个对象p Proximity p = new Proximity();
但是未设置成员变量latitude
(假设它是一个对象)。 即纬度为空。 根据日志,在MapFragment.java: line no. 113
MapFragment.java: line no. 113
您正在尝试访问它。 我认为这是显示Toast
的代码,其中p.getLatitude().toString()
导致NullPointerException。
您可能需要在添加Fragment.setArguments
时使用Fragment.setArguments
将Proximity
实例传递给片段,或者在片段中创建方法并从活动中访问它。 由于没有发布用于Proximity
的代码,因此我假设lat和long都不是原始数据类型的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.