Передача данных из Activity в Fragment с использованием патента Singleton является нулевой? - PullRequest
0 голосов
/ 28 февраля 2020

Я сейчас разрабатываю карту в 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 я получаю нулевые данные. Может кто-нибудь помочь мне решить это? Большое спасибо

...