[英]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.setArguments
将Proximity
实例传递给片段,或者在片段中创建方法并从活动中访问它。 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.