简体   繁体   中英

Press back button current fragment persist not restore previous fragment

I have Fragment Activity which contains a Framelayout for fragment transition. A fragment named LeadActiviy extends SherlockListFragment contains Asynctask , in AsyncTask 's method onPostExcute contents else block statement. In else block current fragment replaced by ItemNotFound extends Fragment. After set the contents of ItemNotFound in framelayout when press back button it's current state persist & not appear its previous fragment. Please help me to solve issue-

Code of AsyncTask's method onPostExecute from LeadActivity ...

  protected void onPostExecute(String file_url){
    pDialog.dismiss();
    //FragmentManager fm=getFragmentManager();
    //final FragmentTransaction ft=fm.beginTransaction();
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if(success==1){
            // TODO Auto-generated method stub
            ListAdapter adapter = new SimpleAdapter(
                    getActivity(), leadlist,R.layout.leadlistview, new String[] { Tag_Lead},
                    new int[] { R.id.textView6});
            // updating listview
            setListAdapter(adapter);
            //get leads of order
            ListView lv=getListView();
            lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub
                    String pid=((TextView) arg1.findViewById(R.id.textView6)).getText().toString();

                    LeadDetail frag=new LeadDetail();
                    Bundle bnd=new Bundle();
                    bnd.putString("lead",pid);
                    frag.setArguments(bnd);
                    FragmentManager fm=getFragmentManager();
                    FragmentTransaction ft=fm.beginTransaction();
                    ft.replace(R.id.content_frame, frag);
                    ft.addToBackStack(null);
                    ft.commit();
                }

            });
            }
            else {
                String e="Lead Not Found";              
                ItemNotFound frag=new ItemNotFound();
                //Frag1 frag=new Frag1();
                Bundle bnd=new Bundle();
                bnd.putString("data",e);
                frag.setArguments(bnd);
                FragmentManager fm1=getFragmentManager();
                FragmentTransaction ft1=fm1.beginTransaction();
                ft1.replace(R.id.content_frame, frag,st);
                ft1.addToBackStack(st);
                ft1.commit();
               }
        }

Code for ItemNotFound.............

  public class ItemNotFound extends SherlockFragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    View V = inflater.inflate(R.layout.itemnotfound, container, false);
    TextView tv=(TextView)V.findViewById(R.id.textView7);
    Bundle bnd=this.getArguments();
    String s=bnd.getString("data");
    tv.setText(s);
    return V;
    }

   }

You can see my solution here .

I have a ViewPager with three pages which contains Fragments . In first page, I have a ListFragment and onListItemClick I replace that Fragment with another one. When Back Button is pressed, I go back to ListFragment .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM