簡體   English   中英

如何在Android中將ArrayList從Activity傳遞到Fragment

[英]How to Pass ArrayList from Activity to Fragment in Android

我有一個MainActivity和一個片段。 我要做的是將數組列表從我的主要活動傳遞到片段。

在我的MainActivity中,我的代碼如下所示:

private final List<RestaurantParcelableModel> restaurantList = new ArrayList<>();
...
RestaurantsFragment restaurantsFragment = new RestaurantsFragment();
        Bundle args = new Bundle();
        args.putParcelableArrayList("restaurantList", (ArrayList<? extends Parcelable>) restaurantList);
        restaurantsFragment.setArguments(args);

        FragmentManager fragmentManager = getFragmentManager();
        android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.restaurants_list, restaurantsFragment);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();

現在,我在fragmentTransaction.replace(R.id.restaurants_list, RestaurantsFragment )中收到此錯誤; -“ 錯誤的第二個參數類型。找到:'com.test.restaurants.sliderfragments.RestaurantsFragment',必需:'android.app.Fragment'替換FragmentTransaction中的(int,android.app.Fragment)不能應用於(int,com .test.restaurants.sliderfragments.RestaurantsFragment)

@Kemo我現在遇到的相同錯誤是我使用片段支持管理器而不是片段管理器。

        FragmentManager fragmentManager = getSupportFragmentManager();
        android.support.v4.app.FragmentTransaction fragmentTransaction = 
        fragmentManager.beginTransaction();
        BlankFragment blankFragment = new BlankFragment();
        fragmentTransaction.add(R.id.ll, blankFragment, "");
        fragmentTransaction.commit();

這是因為您的類RestaurantParcelableModel沒有實現Parceable類。 實現可分割的類並覆蓋所需的方法。

請訪問: http : //www.vogella.com/tutorials/AndroidParcelable/article.html

您可以使用Bundle發送ArrayList:

Bundle args = new Bundle();
args.putStringArrayList("array", mArrayList);
restaurantsFragment.setArguments(args);

您必須刪除以下行: import android.support.v4.app.Fragment; 並將其更改為import android.app.Fragment;

現在要解決此問題,您必須處理導入。

使用import android.app.Fragment而不是import android.support.v4.app.Fragment

或使用支持片段管理器更新應用的主要內容,如下所示:

FragmentManager fragmentManager = getSupportFragmentManager(). 

但是然后,您還必須更改FragmentManager本身的類型。 import android.app.FragmentManagerimport android.support.v4.app.FragmentManager;

您可以使用parceable或serializabale傳遞arraylist或array list的對象。您可以從github的給定鏈接中找到parceable的示例。 ParceableSample.zip下載zip文件

您可以使用上面的鏈接示例來傳遞數組列表或數組列表的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM