Hello, greeting to all developer.
I have problem with my project. I created a view pager (using VPI) in a fragment. The View Pager have 3 tab with a fragment each of tab. In that fragment i put recycle view. The problem comes when I switch fragment from my view pager fragment to another fragment with "addToBackStack" and when i "popBackStack", comes an exception "LinearLayoutManager is already attached to a RecyclerView".
Here's the code :
Main Fragment
Fragment in ViewPager:
The Exception message :
Does anyone know how to solve this ?
Sorry for my English, it is not my native
Thank you
I have problem with my project. I created a view pager (using VPI) in a fragment. The View Pager have 3 tab with a fragment each of tab. In that fragment i put recycle view. The problem comes when I switch fragment from my view pager fragment to another fragment with "addToBackStack" and when i "popBackStack", comes an exception "LinearLayoutManager is already attached to a RecyclerView".
Here's the code :
Main Fragment
Java:
public class FragMainPage extends Fragment {
TitlePageIndicator tabs;
ViewPager pager;
MainFragmentAdapter adapternya;
ProgressDialog progdialog;
View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.frag_main_page, container, false);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
List<BaseFragmentMainPage> mList = new ArrayList<BaseFragmentMainPage>();
mList.add(new MyHistory());
mList.add(new TimeLine());
mList.add(new Group());
tabs = (TitlePageIndicator)getActivity().findViewById(R.id.main_tabs);
pager = (ViewPager) getActivity().findViewById(R.id.main_pager);
adapternya = new MainFragmentAdapter(getChildFragmentManager(),getActivity(),mList);
pager.setAdapter(adapternya);
pager.setPageMargin(pageMargin);
tabs.setViewPager(pager);
pager.setCurrentItem(1);
}
Fragment in ViewPager:
Java:
public class TimeLine extends Fragment {
private RecyclerView mRecyclerView;
private TimeLineRecycleAdapter mAdapter;
private final LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.frag_time_line, container, false);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
List<listTimeLineModel> mList = new ArrayList<listTimeLineModel>();
mList.add(new listTimeLineModel("ANDI","FRANKLYN","MESSAGE","28 sec","100,000","http://lorempixel.com/output/technics-q-c-480-480-6.jpg" ));
mList.add(new listTimeLineModel("ANDI","FRANKLYN","MESSAGE","28 sec","100,000","http://lorempixel.com/output/sports-q-c-480-480-8.jpg" ));
mList.add(new listTimeLineModel("ANDI","FRANKLYN","MESSAGE","28 sec","100,000","http://lorempixel.com/output/sports-q-c-480-480-4.jpg" ));
mRecyclerView = (RecyclerView)v.findViewById(R.id.timeline_recycle_list);
mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mLayoutManager.scrollToPosition(0);
//mRecyclerView.setLayoutManager(null);
mRecyclerView.setLayoutManager(mLayoutManager); //this is the problem
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mAdapter = new TimeLineRecycleAdapter(mList, R.layout.list_recycle_timeline_item, getActivity());
mRecyclerView.setAdapter(mAdapter);
}
}
The Exception message :
Code:
05-05 14:41:10.116 31918-31918/com.sgo.mdevcash E/InputEventSender﹕ Exception dispatching finished signal.
05-05 14:41:10.116 31918-31918/com.sgo.mdevcash E/MessageQueue-JNI﹕ Exception in MessageQueue callback: handleReceiveCallback
05-05 14:41:10.131 31918-31918/com.sgo.mdevcash E/MessageQueue-JNI﹕ java.lang.IllegalArgumentException: LayoutManager android.support.v7.widget.LinearLayoutManager@42c19278 is already attached to a RecyclerView: android.support.v7.widget.RecyclerView{42c26c90 VFED.V.. ......ID 0,0-1080,1551 #7f0b010d app:id/timeline_recycle_list}
at android.support.v7.widget.RecyclerView.setLayoutManager(RecyclerView.java:804)
at com.sgo.mdevcash.fragments.TimeLine.onActivityCreated(TimeLine.java:53)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1797)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:979)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1120)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1929)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1803)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:979)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:960)
at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1553)
at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:506)
at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:178)
at com.sgo.mdevcash.activities.MainPage.onBackPressed(MainPage.java:611)
at android.app.Activity.onKeyUp(Activity.java:2279)
at android.view.KeyEvent.dispatch(KeyEvent.java:2985)
at android.app.Activity.dispatchKeyEvent(Activity.java:2513)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:49)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImplBase.java:241)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:49)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2174)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4491)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4458)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4023)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4077)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4046)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4157)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4054)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4214)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4023)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4077)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4046)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4054)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4023)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4077)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4046)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4190)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4350)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2257)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1907)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1898)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2234)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.
Does anyone know how to solve this ?
Sorry for my English, it is not my native
Thank you