Я сейчас разрабатываю карту в android и столкнулся с проблемой, и я исследовал в Google и нашел слишком много решения. И я решил выбрать патент Singleton для передачи данных во Фрагмент. В классе MainActivity у меня есть кнопка для поиска местоположения, в MapFragment я показываю карту. Когда я нажимаю на кнопку из класса ManActivity и в MapFragment, я хочу получить данные, но они нулевые.
Мой код такой:
Мой класс MapBase (с использованием патента Singleton)
public class MapBase {
private static final String TAG = "MapBase";
private static MapBase mapBase;
private List<PlaceModel> placeList;
public MapBase(){
placeList = new ArrayList<>();
}
public static MapBase getInstance(){
if(mapBase == null){
mapBase = new MapBase();
}
return mapBase;
}
public List<PlaceModel> getPlaceList() {
return placeList;
}
public void setPlaceList(List<PlaceModel> placeList) {
this.placeList = placeList;
}
}
Класс MainActivity
btnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MapBase.getInstance().setPlaceList(response.body());
}
});
Мой класс MapFragment
public class MapFragment extends Fragment{
private List<PlaceModel> placeList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState){
mapView = inflater.inflate(R.layout.fragment_map, viewGroup, false);
Log.i(TAG, "onCreateViewMap");
return mapView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
Log.d(TAG, "TEST SINGLETON: " + MapBase.getInstance().getPlaceList());
}
}
Мой man_activity. xml макет
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/editTextSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="9"
android:backgroundTint="@color/LightGrayW50"
android:gravity="start"
android:hint="@string/search_hint"
android:imeOptions="actionSearch"
android:inputType="text"
android:maxLines="1" />
<ImageButton
android:id="@+id/imageButtonSearch"
android:layout_width="48dp"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/search" />
</LinearLayout>
Мой map_fragment. xml layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/fragmentGoogleMap"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent">
</fragment>
В моем классе MApFragment я получаю нулевые данные. Может кто-нибудь помочь мне решить это? Большое спасибо