I have 2 fragments (A and B).I have used a FragmentTabHost
in main activity and used these fragments as two different tab. I implemented view pager on fragment A. When I update fragment B I tried to update fragment A also. Which means view pager must be updated.
But after updating B when I switch the tab from B to A, I am unable to get the update in A. After relaunch the app I find the update. But I want the update instantly. I know fragment is tightly coupled with activity. So, I also tried using detach and attach fragment from main activity.
here is my code of fragment A :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.current_details, container, false);
init();
return mView;
}
private void init() {
session = new SessionManager(getActivity());
if (session.getCurrentId() < 1) {
count = 1;
} else {
count = AppController.getInstance().getProfile().size();
}
mFragmentAdapter = new FragmentAdapter(getChildFragmentManager());
mViewPager = (ViewPager) mView.findViewById(R.id.pager);
mViewPager.setAdapter(mFragmentAdapter);
mViewPager.setCurrentItem(session.getCurrentId());
Log.d("Status : ","called");
}
public static class FragmentAdapter extends FragmentStatePagerAdapter {
public FragmentAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
SpecificCurrentDetails fragment = new SpecificCurrentDetails();
Bundle bdl = new Bundle();
int id;
if (AppController.getInstance().getProfile() == null) {
id = 0;
} else {
id = AppController.getInstance().getProfile().get(arg0).getId();
}
Log.d("Status ID: ", id + "");
bdl.putInt("profile_id", id);
fragment.setArguments(bdl);
return fragment;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return count;
}
@Override
public void destroyItem(ViewGroup container, int position, Object
object) {
// TODO Auto-generated method stub
super.destroyItem(container, position, object);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
from the code when I switch the tab. I get the log "Status : called"
but not getting "Status id: "
to be called. When I restart the app then get "Status id : x"
called.
I am not getting the point where is the problem though I found onCreateView()
is called everytime I switch the tab. I have googled a lot but not yet get any satisfied answers.