ViewPagerAdapter의 부모에서 자식 조각으로 데이터 전달

이반 아리 올라

다음 조각이 있습니다.

public class VehicleEditFragment extends Fragment {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private SharedPreferences preferences;
    private View myView;
    private ViewPagerAdapter adapter;
    private Vehicle vehicle;
    private int vehicle_id;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        myView = inflater.inflate(R.layout.activity_scrollable_tabs, container, false);
        preferences = getActivity().getSharedPreferences(Config.SHARED_PREF_LOGIN, Context.MODE_PRIVATE);
        Bundle args = this.getArguments();
        vehicle_id = args.getInt("vehicle_id");
        viewPager = (ViewPager) myView.findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) myView.findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
        return myView;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }


    private void setupViewPager(ViewPager viewPager) {
        getActivity().setTitle("Vehiculo");
        adapter = new ViewPagerAdapter(getChildFragmentManager());
        adapter.addFrag(new VehicleBasicInfoFragment(), "Datos básicos");
        adapter.addFrag(new VehicleEquipmentServicesFragment(), "Equipamiento y Servicios");
        adapter.addFrag(new VehicleExplanationFragment(), "Descripción");
        adapter.addFrag(new VehicleLocationFragment(), "Localización");
        adapter.addFrag(new VehicleImagesFragment(), "Fotos");
        adapter.addFrag(new VehicleRatesFragment(), "Tarifas");
        adapter.addFrag(new VehicleDisponibilityFragment(), "Disponibilidad");
        viewPager.setAdapter(adapter);
    }



    @Override
    public void onStop() {
        super.onStop();
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public android.support.v4.app.Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFrag(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }

    private class FindVehicleInfo extends AsyncTask<String, Void, String> {
        String token = preferences.getString(Config.TOKEN, "");

        @Override
        protected void onPreExecute() {
            //swipeRefreshLayout.setRefreshing(true);
            //toast = Toast.makeText(getActivity().getApplicationContext(), "", Toast.LENGTH_LONG);
        }

        @Override
        protected void onPostExecute(String s){
            if(vehicle.getError() != 0){
                if(vehicle.getError() == Config.JWT_EXPIRED){
                    //logout();
                    Toast.makeText(getActivity().getApplicationContext(),
                            getActivity().getString(R.string.session_expired),
                            Toast.LENGTH_LONG).show();
                }else {
                    //toast.setText(getActivity().getString(R.string.find_pendings_errror));
                   // toast.show();
                }
            }else {
                //setUpAdapter();
            }
            //swipeRefreshLayout.setRefreshing(false);
        }

        @Override
        protected String doInBackground(String... params) {
            vehicle = DBConnect.GetVehicleInfo(token, vehicle_id);
            return "done";
        }
    }
}

내가 필요한 것은 Vehicle 클래스의 정보를 내가 가지고있는 모든 자식 조각에 전달하는 것입니다. 완벽한 aproach는 부모를 각 자녀와 연결하고 부모로부터 자녀에게 차량 정보를 얻을 수 있다는 것입니다. 가능합니까? 또는 각 어린이에게 정보를 전달하는 다른 방법이 있습니까?

AdamMc331

따라서 Vehicle 클래스가 작성한 것으로 가정하면 해당 클래스가 Parcelable 인터페이스를 구현하도록하는 것이 좋습니다 .

그런 다음 객체가 Parcelable이므로 새 인스턴스 메서드를 사용하여 Fragment에 전달할 수 있습니다.

public static VehicleBasicInfoFragment NewInstance(Vehicle vehicle) {
   Bundle args = new Bundle();
   args.putParcelable("vehicleKey", vehicle);

   VehicleBasicInfoFragment fragment = new VehicleBasicInfoFragment();
   fragment.setArguments(args);

   return fragment;
}

그런 다음 onCreate 메서드에서 해당 정보를 검색 할 수 있습니다.

@Override
public void onCreate(Bundle savedInstanceState) {
   super(savedInstanceState);

   Vehicle vehicle = getArguments.getExtras().getParcelable("vehicleKey");
}

이와 같은 고유 한 NewInstance 메서드를 갖도록 하위 프래그먼트를 업데이트 한 후에는 다음과 같이 ViewHolder 생성을 업데이트 할 수 있습니다.

adapter.addFrag(VehicleBasicInfoFragment.NewInstance(vehicleObject), "Datos básicos");

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Blazor는 부모에서 자식으로 데이터 전달

분류에서Dev

부모에서 자식으로 데이터 전달 StatefulWidget Flutter

분류에서Dev

Angular : 입력이 정의되지 않은 상태에서 부모에서 자식으로 데이터 전달

분류에서Dev

부모에서 자식으로 데이터 전달 (중첩 된 양식)

분류에서Dev

ReactJS Hooks에서 부모에서 자식으로 데이터 / 변수 전달

분류에서Dev

vue.js에서 부모에서 자식으로 데이터 전달

분류에서Dev

Angular의 부모 구성 요소에서 자식 구성 요소로 데이터를 전달할 때 HTML 오류

분류에서Dev

자식에서 부모로 데이터 onChange를 전달합니까? 모난

분류에서Dev

Swift-자식보기에서 부모보기로 데이터 전달

분류에서Dev

Vuejs 부모에서 자식 구성 요소로 동적 데이터 전달

분류에서Dev

부모 양식에서 자식 양식으로 데이터를 전달하는 방법

분류에서Dev

컨텍스트 API를 사용하여 부모에서 자식 및 형제 자식으로 데이터 전달

분류에서Dev

자식보기에서 부모보기로 데이터를 SwiftUI의 다른 자식보기로 어떻게 전달합니까?

분류에서Dev

하단 시트 대화 상자 조각에서 조각으로 데이터 전달

분류에서Dev

cfm의 부모 페이지에서 자식 창으로 텍스트 상자 값 전달

분류에서Dev

부모의 가져 오기 호출에서 데이터가 전달되기 전에 React 자식 구성 요소가로드되지 않도록하는 방법

분류에서Dev

자식에서 부모에게 데이터 전달 React Hooks

분류에서Dev

메인 큐의 부모 컨텍스트에서 프라이빗 큐의 자식으로 개체 전달

분류에서Dev

필터링 된 데이터가 React의 부모 구성 요소에서 자식 구성 요소로 전달되지 않습니다.

분류에서Dev

반응 후크를 사용하여 부모에서 자식으로 데이터를 전달하는 방법

분류에서Dev

Angular2-부모에서 자식 입력으로 입력 유효성 검사 데이터 전달

분류에서Dev

Vuejs-소품을 사용하여 부모에서 자식으로 데이터 전달

분류에서Dev

ViewPagerAdapter에서 다른 활동으로 데이터를 전달하는 방법

분류에서Dev

$ emit () 메서드를 사용하여 Vue.js에서 자식에서 부모로 데이터 전달

분류에서Dev

reactjs의 부모 기능 구성 요소에 데이터 자식 전달

분류에서Dev

onChange 반응없이 자식에서 부모로 값 전달

분류에서Dev

React Native에서 자식 구성 요소에서 부모 구성 요소로 데이터를 전달합니까?

분류에서Dev

반응에서 데이터가 자식에서 부모로 어떻게 전달되고 있습니까?

분류에서Dev

반응에서 작동하지 않는 자식에서 부모 구성 요소로 데이터 전달

Related 관련 기사

  1. 1

    Blazor는 부모에서 자식으로 데이터 전달

  2. 2

    부모에서 자식으로 데이터 전달 StatefulWidget Flutter

  3. 3

    Angular : 입력이 정의되지 않은 상태에서 부모에서 자식으로 데이터 전달

  4. 4

    부모에서 자식으로 데이터 전달 (중첩 된 양식)

  5. 5

    ReactJS Hooks에서 부모에서 자식으로 데이터 / 변수 전달

  6. 6

    vue.js에서 부모에서 자식으로 데이터 전달

  7. 7

    Angular의 부모 구성 요소에서 자식 구성 요소로 데이터를 전달할 때 HTML 오류

  8. 8

    자식에서 부모로 데이터 onChange를 전달합니까? 모난

  9. 9

    Swift-자식보기에서 부모보기로 데이터 전달

  10. 10

    Vuejs 부모에서 자식 구성 요소로 동적 데이터 전달

  11. 11

    부모 양식에서 자식 양식으로 데이터를 전달하는 방법

  12. 12

    컨텍스트 API를 사용하여 부모에서 자식 및 형제 자식으로 데이터 전달

  13. 13

    자식보기에서 부모보기로 데이터를 SwiftUI의 다른 자식보기로 어떻게 전달합니까?

  14. 14

    하단 시트 대화 상자 조각에서 조각으로 데이터 전달

  15. 15

    cfm의 부모 페이지에서 자식 창으로 텍스트 상자 값 전달

  16. 16

    부모의 가져 오기 호출에서 데이터가 전달되기 전에 React 자식 구성 요소가로드되지 않도록하는 방법

  17. 17

    자식에서 부모에게 데이터 전달 React Hooks

  18. 18

    메인 큐의 부모 컨텍스트에서 프라이빗 큐의 자식으로 개체 전달

  19. 19

    필터링 된 데이터가 React의 부모 구성 요소에서 자식 구성 요소로 전달되지 않습니다.

  20. 20

    반응 후크를 사용하여 부모에서 자식으로 데이터를 전달하는 방법

  21. 21

    Angular2-부모에서 자식 입력으로 입력 유효성 검사 데이터 전달

  22. 22

    Vuejs-소품을 사용하여 부모에서 자식으로 데이터 전달

  23. 23

    ViewPagerAdapter에서 다른 활동으로 데이터를 전달하는 방법

  24. 24

    $ emit () 메서드를 사용하여 Vue.js에서 자식에서 부모로 데이터 전달

  25. 25

    reactjs의 부모 기능 구성 요소에 데이터 자식 전달

  26. 26

    onChange 반응없이 자식에서 부모로 값 전달

  27. 27

    React Native에서 자식 구성 요소에서 부모 구성 요소로 데이터를 전달합니까?

  28. 28

    반응에서 데이터가 자식에서 부모로 어떻게 전달되고 있습니까?

  29. 29

    반응에서 작동하지 않는 자식에서 부모 구성 요소로 데이터 전달

뜨겁다태그

보관