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クラスの情報を私が持っているすべての子フラグメントに渡すことです。完璧なアプローチは、親と各子を接続し、親から子への車両情報を取得できるようにすることです。それは可能ですか?または、各子供に情報を渡す他の方法はありますか?

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

Android:親と子の間で更新データを渡す-フラグメント

分類Dev

Android:親フラグメントから子フラグメントにデータを送信する方法

分類Dev

親から子にデータパラメータを渡す

分類Dev

1つのフラグメントから前のフラグメントにデータを渡す方法は?

分類Dev

現在のフラグメントから前のフラグメントにデータを渡す方法

分類Dev

フラグメントから別のフラグメントにデータを渡す方法-android

分類Dev

スライドタブレイアウトで1つのフラグメントから複数のフラグメントにデータを渡す

分類Dev

JSONデータをあるフラグメントから別のフラグメントに渡すための最良の方法は何ですか

分類Dev

Vueで子から親コンポーネントにデータを渡す

分類Dev

テンプレートの継承:親から子にデータを渡す

分類Dev

フラグメントBからフラグメントAにデータを渡す

分類Dev

Recyclerviewからフラグメントにデータを渡す方法

分類Dev

ReactJSで子コンポーネントからその親にデータを渡す方法は?

分類Dev

フラグメントからAndroidのボトムシートにデータを渡す方法は?

分類Dev

Angularで親コンポーネントから子コンポーネントにデータを渡すときのHTMLエラー

分類Dev

SharedPreferencesからRecylerViewAdapterにデータを取得して次のフラグメントに渡す方法

分類Dev

ダガー2を使用しながら子フラグメントにデータを渡す方法

分類Dev

複数のボタンを使用してフラグメントからフラグメントにデータを渡す方法は?

分類Dev

ViewpagerTablayoutでアクティビティからフラグメントにデータを渡す

分類Dev

拡張可能なリストビューの選択した子ビューデータをフラグメントから親アクティビティに送信するにはどうすればよいですか?

分類Dev

AndroidのViewModelを使用して、recyclerviewを使用してフラグメントから他のフラグメントにデータを渡します

分類Dev

android-ViewPagerのアクティビティからフラグメントにデータを渡します

分類Dev

フラグメントからアクティビティに複数のデータを渡す方法

分類Dev

子から親、および別の子コンポーネントにデータを渡すReact Js

分類Dev

親コントローラーから子コンポーネントに非同期データを渡すにはどうすればよいですか?

分類Dev

子コンポーネントから親に関数を介してパラメータを渡すReact Redux

分類Dev

子から親にパラメータを渡すVUE2

分類Dev

子から親コンポーネントAngularにデータを渡す方法

分類Dev

子から親コンポーネントAngularにデータを渡す方法

Related 関連記事

  1. 1

    Android:親と子の間で更新データを渡す-フラグメント

  2. 2

    Android:親フラグメントから子フラグメントにデータを送信する方法

  3. 3

    親から子にデータパラメータを渡す

  4. 4

    1つのフラグメントから前のフラグメントにデータを渡す方法は?

  5. 5

    現在のフラグメントから前のフラグメントにデータを渡す方法

  6. 6

    フラグメントから別のフラグメントにデータを渡す方法-android

  7. 7

    スライドタブレイアウトで1つのフラグメントから複数のフラグメントにデータを渡す

  8. 8

    JSONデータをあるフラグメントから別のフラグメントに渡すための最良の方法は何ですか

  9. 9

    Vueで子から親コンポーネントにデータを渡す

  10. 10

    テンプレートの継承:親から子にデータを渡す

  11. 11

    フラグメントBからフラグメントAにデータを渡す

  12. 12

    Recyclerviewからフラグメントにデータを渡す方法

  13. 13

    ReactJSで子コンポーネントからその親にデータを渡す方法は?

  14. 14

    フラグメントからAndroidのボトムシートにデータを渡す方法は?

  15. 15

    Angularで親コンポーネントから子コンポーネントにデータを渡すときのHTMLエラー

  16. 16

    SharedPreferencesからRecylerViewAdapterにデータを取得して次のフラグメントに渡す方法

  17. 17

    ダガー2を使用しながら子フラグメントにデータを渡す方法

  18. 18

    複数のボタンを使用してフラグメントからフラグメントにデータを渡す方法は?

  19. 19

    ViewpagerTablayoutでアクティビティからフラグメントにデータを渡す

  20. 20

    拡張可能なリストビューの選択した子ビューデータをフラグメントから親アクティビティに送信するにはどうすればよいですか?

  21. 21

    AndroidのViewModelを使用して、recyclerviewを使用してフラグメントから他のフラグメントにデータを渡します

  22. 22

    android-ViewPagerのアクティビティからフラグメントにデータを渡します

  23. 23

    フラグメントからアクティビティに複数のデータを渡す方法

  24. 24

    子から親、および別の子コンポーネントにデータを渡すReact Js

  25. 25

    親コントローラーから子コンポーネントに非同期データを渡すにはどうすればよいですか?

  26. 26

    子コンポーネントから親に関数を介してパラメータを渡すReact Redux

  27. 27

    子から親にパラメータを渡すVUE2

  28. 28

    子から親コンポーネントAngularにデータを渡す方法

  29. 29

    子から親コンポーネントAngularにデータを渡す方法

ホットタグ

アーカイブ