我收到此错误:
Attempt to invoke virtual method 'void com.example.standa.vecerkaFirestore.MapFragment.testMethod()'
on a null object reference
当我在片段中调用该方法时,一切工作正常,但是当我从另一个活动中调用该方法时,它将抛出空指针。
为什么会这样?
我从中调用方法的活动代码
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.botton_sheet_layout, container, false);
final MapFragment frg = (MapFragment)
getFragmentManager().findFragmentById(R.id.map);
final Switch switch_open = v.findViewById(R.id.switch_open);
switch_open.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (switch_open.isChecked()){
frg.testMethod();
}else{
}
}
});
这是地图Fragment的代码:
public class MapFragment extends Fragment implements OnMapReadyCallback {
public void onMapReady(GoogleMap googleMap) {
public void testMethod(){
double longitude = 14.450388;//location.getLongitude();
double latitude =50.085913;// location.getLatitude();
LatLng testerloc=new LatLng(latitude,longitude);
map.addMarker(new MarkerOptions().position(testerloc).title("yesCardOpen").snippet(""));
}
}
}
我只包括测试方法。
答案 0 :(得分:0)
getFragmentManager()获取当前活动的fragmentManager。这就是为什么它返回null的原因。
您可能应该做的是创建一个Listener
,以将第二个活动与地图片段进行通信。