0
我有显示在网格中显示的项目列表和数据来自web服务。当我点击它需要到新屏幕的项目,但是当从这个屏幕到具有网格的屏幕时,布局被重新创建,但是我想保存实例像活动,以便不再创建屏幕。我能做些什么来实现这一目标?在片段屏幕上不断加载?
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mfragmentManager = getActivity().getSupportFragmentManager();
mhandler=new Handler(this);
mLvAllDeals = (GridView) mview.findViewById(R.id.xLvAllDeals);
mLvAllDeals.setCacheColorHint(0);
mLvAllDeals.setOnItemClickListener(this);
new MyDealsAsyncTask().execute();
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAlDealName = new ArrayList<AllDealsData>();
}
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
if(arg0==mLvAllDeals)
{
position = arg2;
AllDealsData bean;
bean = mAlDealName.get(position);
Fragment frag = getFragmentManager().findFragmentById(R.id.inner_content2);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);
if (!frag.getTag().equals("dealsinfo"))
{
Bundle args = new Bundle();
args.putString("dealid", bean.getId());
mdealinfo.setArguments(args);
ft.replace(R.id.inner_content2, mdealinfo, "dealsinfo");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
}
}
}
这是正确的,但是当我回来这个画面可以nither保存屏幕也不是的AsyncTask(新MyDealsAsyncTask()执行();)被称为因此数据不会加载到屏幕上。你能告诉我在这种情况下该怎么做。 – user2106413
在事务完成后提交注册监听器(提交完成。)。这个监听器将有助于了解当子片段与片段管理器分离时,当前片段将会出现。 getSupportFragmentManager()。addOnBackStackChangedListener(新OnBackStackChangedListener(){ \t \t \t \t \t \t @Override \t \t \t公共无效onBackStackChanged(){ \t \t \t \t // TODO自动生成方法存根 \t \t \t \t \t \t \t} \t \t}); –