![](/img/trans.png)
[英]How to Show Dialog Fragment from ImageView onClick in RecycleView Adapter
[英]Cannot set RecycleView Adapter in Fragment
我有這樣的片段
...
public class Dashboard extends Fragment{
private RecyclerView mTopSellersListView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_dashboard, container, false);
mTopSellersListView = (RecyclerView) view.findViewById(R.id.topSellersListView);
return view;
}
public void setTopSellersListView(MyRecycleAdapter adapter){
mTopSellersListView.setHasFixedSize(true);
mTopSellersListView.setAdapter(adapter);
mTopSellersListView.setLayoutManager(new LinearLayoutManager(getActivity()));
mTopSellersListView.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL));
mTopSellersListView.setItemAnimator(new DefaultItemAnimator());
}
}
我總共有4個片段,可以使用此方法通過底部欄在MainActivity中切換所有片段,當用戶點擊菜單時,它將用另一個片段替換當前片段(默認值:儀表板):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDashboardFragment = new Dashboard();
mOrdersFragment = new Orders();
mProductsFragment = new Products();
mSettingFragment = new Setting();
settingMenu(savedInstanceState);
}
...
public void selectMenu(String menu){
Fragment fr = null;
switch (menu) {
case "Dashboard":
fr = mDashboardFragment;
break;
case "Orders":
fr = mOrdersFragment;
break;
case "Products":
fr = mProductsFragment;
break;
case "Setting":
fr = mSettingFragment;
break;
}
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment, fr);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
我在另一個類(不是活動類)中訪問setTopSellersListView()
MainActivity.mDashboardFragment.setTopSellersListView(mProductAdapter);
並在mTopSellersListView.setHasFixedSize(true)處獲得了NullPointerExceptions
首先設置您的layoutManager而不是使用setHasFizedSize(true)。因為layoutManager決定了recyclerView的大小。
我已經通過在Fragment的onStart()中調用setTopSellersListView()修復了它,並且效果很好
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.