2017-05-02 65 views
-2

我想在後退按鈕被點擊時從另一個片段中恢復默認片段,但我無法恢復到之前的片段。如何才能實現?片段是否可以支持前一個片段?

EduHunt類主類

public class EduHunt extends AppCompatActivity { 
    private DrawerLayout mDrawer; 
    private Toolbar toolbar; 
    private NavigationView nvDrawer; 
    private ActionBarDrawerToggle drawerToggle; 
    TextView toolBarTitle; 
    ImageView toolBarLogo; 


    private Fragment mTabHost; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_edu_hunt); 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     toolBarLogo = (ImageView) findViewById(R.id.toolbarlogo); 
     toolBarTitle = (TextView) findViewById(R.id.toolbartitle); 


     mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

     nvDrawer = (NavigationView) findViewById(R.id.nvView); 
     setupDrawerContent(nvDrawer); 

     // Find our drawer view 
     mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawerToggle = setupDrawerToggle(); 

     // Tie DrawerLayout events to the ActionBarToggle 
     mDrawer.addDrawerListener(drawerToggle); 

     FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); 
     tx.replace(R.id.flContent, new Search()); 

     tx.commit(); 


    } 

    private ActionBarDrawerToggle setupDrawerToggle() { 
     return new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.drawer_open, R.string.drawer_close); 
    } 

    private void setupDrawerContent(NavigationView navigationView) { 
     navigationView.setNavigationItemSelectedListener(
       new NavigationView.OnNavigationItemSelectedListener() { 
        @Override 
        public boolean onNavigationItemSelected(MenuItem menuItem) { 
         selectDrawerItem(menuItem); 
         return true; 
        } 
       }); 
    } 

    public void selectDrawerItem(MenuItem menuItem) { 
     // Create a new fragment and specify the fragment to show based on nav item clicked 
     Fragment fragment = null; 
     Class fragmentClass; 
     switch (menuItem.getItemId()) { 
      case R.id.search: 
       fragmentClass = Search.class; 
       toolBarLogo.setVisibility(View.GONE); 
       toolBarTitle.setText("Search"); 
       break; 
      case R.id.settings: 
       fragmentClass = Settings.class; 
       toolBarLogo.setVisibility(View.GONE); 
       toolBarTitle.setText("About"); 
       break; 
      case R.id.register: 
       fragmentClass = Register.class; 
       toolBarLogo.setVisibility(View.GONE); 
       toolBarTitle.setText("Register Now"); 
       break; 
      case R.id.nearme: 
       fragmentClass = NearMe.class; 
       toolBarLogo.setVisibility(View.GONE); 
       toolBarTitle.setText("Near Me"); 
       break; 
      default: 
       fragmentClass = Search.class; 
     } 

     try { 
      fragment = (Fragment) fragmentClass.newInstance(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 

     menuItem.setChecked(true); 
     setTitle(menuItem.getTitle()); 
     mDrawer.closeDrawers(); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (drawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     switch (item.getItemId()) { 
      case R.id.our_team: 
       final Dialog dialog = new Dialog(this); 
       dialog.setContentView(R.layout.activity_our_team); 
       dialog.show(); 
       return true; 
      case R.id.feedback: 
       startActivity(new Intent(EduHunt.this, SendFeedback.class)); 
       return true; 

     } 
     return super.onOptionsItemSelected(item); 
    } 


    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     drawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggles 
     drawerToggle.onConfigurationChanged(newConfig); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.education_hunt, menu); 
     return true; 
    } 

    @Override 
    public void onBackPressed() { 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     Fragment fragment = fragmentManager.findFragmentById(R.id.flContent); 

     if(!(fragment instanceof Search)){ 

      FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); 
      tx.replace(R.id.flContent, new Search()); 

      tx.commit(); 
     } 
    } 


} 

我想回搜索片段(默認片段),當它從任何其他片段支持,即關於

關於

public class About extends Fragment { 

    MapView mMapView; 
    private GoogleMap googleMap; 
    LinearLayout collegeAffiliation; 
    ImageView phoneCalls, sendEmails, weblink; 

    public TextView aboutName, aboutLocation, aboutNumber, aboutEmail, aboutWebsite, aboutCategory, aboutAffiliation; 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     // Inflate the layout for this fragment 
     View v = inflater.inflate(R.layout.fragment_about, container, false); 
     collegeAffiliation = (LinearLayout) v.findViewById(R.id.collegeAffiliation); 

     aboutName = (TextView) v.findViewById(R.id.about_school_name); 
     aboutLocation = (TextView) v.findViewById(R.id.about_school_location); 
     aboutNumber = (TextView) v.findViewById(R.id.about_school_number); 
     aboutCategory = (TextView) v.findViewById(R.id.about_school_category); 
     aboutAffiliation = (TextView) v.findViewById(R.id.about_college_affiliation); 
     aboutEmail = (TextView) v.findViewById(R.id.about_school_email); 
     aboutWebsite = (TextView) v.findViewById(R.id.about_school_website); 
     phoneCalls = (ImageView) v.findViewById(R.id.phonecalls); 
     sendEmails = (ImageView) v.findViewById(R.id.sendEmails); 
     weblink = (ImageView) v.findViewById(R.id.weblink); 
     mMapView = (MapView) v.findViewById(R.id.mapview); 
     mMapView.onCreate(savedInstanceState); 


     mMapView.onResume(); // needed to get the map to display immediately 

     try { 
      MapsInitializer.initialize(getActivity().getApplicationContext()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     mMapView.getMapAsync(new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap mMap) { 
       googleMap = mMap; 


       OurSchool ourSchool = null; 
       OurCollege ourCollege = null; 
       OurUniversity ourUniversity = null; 
       if (getActivity().getIntent().getSerializableExtra("school") != null) { 
        ourSchool = (OurSchool) getActivity().getIntent().getSerializableExtra("school"); 
        aboutName.setText(ourSchool.getSchoolName()); 
        aboutLocation.setText(ourSchool.getSchoolAddress() + "," + ourSchool.getSchoolDistrict() + "," + ourSchool.getSchoolCountry()); 
        aboutNumber.setText(ourSchool.getSchoolPhone()); 
        aboutNumber.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          callPhoneNumber(); 
         } 
        }); 


        phoneCalls.setOnClickListener(new View.OnClickListener() { 

         @Override 
         public void onClick(View arg0) { 
          callPhoneNumber(); 
         } 
        }); 


        aboutCategory.setText(ourSchool.getSchoolType()); 
        aboutEmail.setText(ourSchool.getSchoolEmail()); 

        aboutEmail.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          sendEmail(); 
         } 
        }); 

        sendEmails.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          sendEmail(); 
         } 
        }); 
        aboutWebsite.setText(ourSchool.getSchoolWebsite()); 
        aboutWebsite.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          setWeblink(); 
         } 
        }); 


        weblink.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          setWeblink(); 
         } 
        }); 
        LatLng schoollatlng = new LatLng(ourSchool.getLatitude(), ourSchool.getLongitude()); 
        googleMap.addMarker(new MarkerOptions().position(schoollatlng).title(ourSchool.getSchoolName())); 
        CameraPosition cameraPosition = new CameraPosition.Builder().target(schoollatlng).zoom(15).build(); 
        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
       } else if (getActivity().getIntent().getSerializableExtra("college") != null) { 
        ourCollege = (OurCollege) getActivity().getIntent().getSerializableExtra("college"); 
        collegeAffiliation.setVisibility(View.VISIBLE); 
        aboutName.setText(ourCollege.getCollegeName()); 
        aboutLocation.setText(ourCollege.getCollegeAddress() + "," + ourCollege.getCollegeDistrict() + "," + ourCollege.getCollegeCountry()); 
        aboutNumber.setText(ourCollege.getCollegePhone()); 

        aboutNumber.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          callPhoneNumber(); 
         } 
        }); 


        phoneCalls.setOnClickListener(new View.OnClickListener() { 

         @Override 
         public void onClick(View arg0) { 
          callPhoneNumber(); 
         } 
        }); 
        aboutCategory.setText(ourCollege.getCollegeType()); 
        aboutAffiliation.setText(ourCollege.getCollegeAffiliation()); 
        aboutEmail.setText(ourCollege.getCollegeEmail()); 
        aboutEmail.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          sendEmail(); 
         } 
        }); 

        sendEmails.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          sendEmail(); 
         } 
        }); 
        aboutWebsite.setText(ourCollege.getCollegeWebsite()); 

        aboutWebsite.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          setWeblink(); 
         } 
        }); 


        weblink.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          setWeblink(); 
         } 
        }); 
        LatLng collegelatlng = new LatLng(ourCollege.getLatitude(), ourCollege.getLongtitude()); 
        googleMap.addMarker(new MarkerOptions().position(collegelatlng).title(ourCollege.getCollegeName())); 
        CameraPosition cameraPosition = new CameraPosition.Builder().target(collegelatlng).zoom(15).build(); 
        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

       } else { 
        ourUniversity = (OurUniversity) getActivity().getIntent().getSerializableExtra("university"); 
        aboutName.setText(ourUniversity.getUniversityName()); 
        aboutLocation.setText(ourUniversity.getUniversityAddress() + "," + ourUniversity.getUniversityDistrict() + "," + ourUniversity.getUniverstiyCountry()); 
        aboutNumber.setText(ourUniversity.getUniversityPhone()); 

        aboutNumber.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          callPhoneNumber(); 
         } 
        }); 

        phoneCalls.setOnClickListener(new View.OnClickListener() { 

         @Override 
         public void onClick(View arg0) { 
          callPhoneNumber(); 
         } 
        }); 
        aboutCategory.setText(ourUniversity.getUniversityType()); 
        aboutEmail.setText(ourUniversity.getUniversityEmail()); 

        aboutEmail.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          sendEmail(); 
         } 
        }); 


        sendEmails.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          sendEmail(); 
         } 
        }); 
        aboutWebsite.setText(ourUniversity.getUniversityWebsite()); 

        aboutWebsite.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          setWeblink(); 
         } 
        }); 


        weblink.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          setWeblink(); 
         } 
        }); 
        LatLng unilatlng = new LatLng(ourUniversity.getUniversityLatitude(), ourUniversity.getUniversityLongitude()); 
        googleMap.addMarker(new MarkerOptions().position(unilatlng).title(ourUniversity.getUniversityName())); 
        CameraPosition cameraPosition = new CameraPosition.Builder().target(unilatlng).zoom(15).build(); 
        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

       } 
      } 
     }); 


     return v; 
    } 

    public void callPhoneNumber() { 
     try { 
      if (Build.VERSION.SDK_INT > 22) { 
       if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
        // TODO: Consider calling 

        ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CALL_PHONE}, 101); 

        return; 
       } 
       OurSchool ourSchool = null; 
       OurCollege ourCollege = null; 
       OurUniversity ourUniversity = null; 
       if (getActivity().getIntent().getSerializableExtra("school") != null) { 
        ourSchool = (OurSchool) getActivity().getIntent().getSerializableExtra("school"); 
        Intent callIntent = new Intent(Intent.ACTION_CALL); 
        callIntent.setData(Uri.parse("tel:" + ourSchool.getSchoolPhone())); 
        startActivity(callIntent); 
       } else if (getActivity().getIntent().getSerializableExtra("college") != null) { 
        ourCollege = (OurCollege) getActivity().getIntent().getSerializableExtra("college"); 
        Intent callIntent = new Intent(Intent.ACTION_CALL); 
        callIntent.setData(Uri.parse("tel:" + ourCollege.getCollegePhone())); 
        startActivity(callIntent); 
       } else 
        ourUniversity = (OurUniversity) getActivity().getIntent().getSerializableExtra("university"); 
       Intent callIntent = new Intent(Intent.ACTION_CALL); 
       callIntent.setData(Uri.parse("tel:" + ourUniversity.getUniversityPhone())); 
       startActivity(callIntent); 


      } else { 
       OurSchool ourSchool = null; 
       OurCollege ourCollege = null; 
       OurUniversity ourUniversity = null; 
       if (getActivity().getIntent().getSerializableExtra("school") != null) { 
        ourSchool = (OurSchool) getActivity().getIntent().getSerializableExtra("school"); 
        Intent callIntent = new Intent(Intent.ACTION_CALL); 
        callIntent.setData(Uri.parse("tel:" + ourSchool.getSchoolPhone())); 
        startActivity(callIntent); 
       } else if (getActivity().getIntent().getSerializableExtra("college") != null) { 
        ourCollege = (OurCollege) getActivity().getIntent().getSerializableExtra("college"); 
        Intent callIntent = new Intent(Intent.ACTION_CALL); 
        callIntent.setData(Uri.parse("tel:" + ourCollege.getCollegePhone())); 
        startActivity(callIntent); 
       } else { 
        ourUniversity = (OurUniversity) getActivity().getIntent().getSerializableExtra("university"); 
        Intent callIntent = new Intent(Intent.ACTION_CALL); 
        callIntent.setData(Uri.parse("tel:" + ourUniversity.getUniversityPhone())); 
        startActivity(callIntent); 
       } 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, 
              int[] grantResults) { 
     if (requestCode == 101) { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       callPhoneNumber(); 
      } else { 
       Log.e("Permission not Granted", ""); 
      } 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     mMapView.onResume(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     mMapView.onPause(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     mMapView.onDestroy(); 
    } 

    @Override 
    public void onLowMemory() { 
     super.onLowMemory(); 
     mMapView.onLowMemory(); 
    } 

    public void sendEmail() { 
     OurSchool ourSchool = null; 
     OurCollege ourCollege = null; 
     OurUniversity ourUniversity = null; 
     if (getActivity().getIntent().getSerializableExtra("school") != null) { 
      ourSchool = (OurSchool) getActivity().getIntent().getSerializableExtra("school"); 
      Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
        "mailto", ourSchool.getSchoolEmail(), null)); 
      try { 
       startActivity(Intent.createChooser(emailIntent, "Send email...")); 
      } catch (android.content.ActivityNotFoundException ex) { 
       Toast.makeText(getContext(), "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
      } 
      startActivity(Intent.createChooser(emailIntent, "Send email...")); 
     } else if (getActivity().getIntent().getSerializableExtra("college") != null) { 
      ourCollege = (OurCollege) getActivity().getIntent().getSerializableExtra("college"); 
      Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
        "mailto", ourCollege.getCollegeEmail(), null)); 
      try { 
       startActivity(Intent.createChooser(emailIntent, "Send email...")); 
      } catch (android.content.ActivityNotFoundException ex) { 
       Toast.makeText(getContext(), "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
      } 
      startActivity(Intent.createChooser(emailIntent, "Send email...")); 
     } else { 
      ourUniversity = (OurUniversity) getActivity().getIntent().getSerializableExtra("university"); 
      Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
        "mailto", ourUniversity.getUniversityEmail(), null)); 
      startActivity(Intent.createChooser(emailIntent, "Send email...")); 
     } 
     try { 

     } catch (android.content.ActivityNotFoundException ex) { 
      Toast.makeText(getContext(), "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
     } 
    } 

    public void setWeblink() { 

     OurSchool ourSchool = null; 
     OurCollege ourCollege = null; 
     OurUniversity ourUniversity = null; 
     if (getActivity().getIntent().getSerializableExtra("school") != null) { 
      ourSchool = (OurSchool) getActivity().getIntent().getSerializableExtra("school"); 
      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.addCategory(Intent.CATEGORY_BROWSABLE); 
      intent.setData(Uri.parse("http://" + ourSchool.getSchoolWebsite())); 
      startActivity(intent); 
     } else if (getActivity().getIntent().getSerializableExtra("college") != null) { 
      ourCollege = (OurCollege) getActivity().getIntent().getSerializableExtra("college"); 
      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.addCategory(Intent.CATEGORY_BROWSABLE); 
      intent.setData(Uri.parse("http://" + ourCollege.getCollegeWebsite())); 
      startActivity(intent); 
     } else { 
      ourUniversity = (OurUniversity) getActivity().getIntent().getSerializableExtra("university"); 
      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.addCategory(Intent.CATEGORY_BROWSABLE); 
      intent.setData(Uri.parse("http://" + ourUniversity.getUniversityWebsite())); 
      startActivity(intent); 
     } 
     try { 

     } catch (android.content.ActivityNotFoundException ex) { 
      Toast.makeText(getContext(), "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
     } 

    } 




} 

當我通過任何其他片段回。該應用程序關閉,但我想 顯示默認的片段。這可以做?

+0

嘿@Ghimire參考這個例子中你會得到你的解決方案https://github.com/colaboy2004/FragmentTabHostExample –

+0

我是否必須使用堆棧中? @piyushpatel – Ghimire

+0

檢查這個https://developer.android.com/guide/components/fragments.html – Pavan

回答

1

檢查片段例如

@Override 
public void onBackPressed() { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    Fragment fragment = fragmentManager.findFragmentById(R.id.flContent); 

    if(!(fragment instanceof YourDefaultFragment)){ 
      //Load your default fragment 

      toolBarLogo.setVisibility(View.GONE); 
      toolBarTitle.setText("Set Title"); 
    } 
    else{ 
     super.onBackPressed(); 
    } 
} 
+0

我必須使用onBackPressed()對Activity?對 – Ghimire

+0

是的管理後壓和檢查片段狀態 –

+0

我有一個問題。後面的工作,但標題不改變隊友。#編輯代碼請檢查 – Ghimire

0

您可以使用界面,返回堆棧中聽者和onBackPress以下方式

創建BaseFragment

公共類FlipkartBaseFragment擴展片段{

private MainFlipkartActivity activity; 

private ChangeCurrentFragment changeCurrentFragment; 



@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    activity = (MainFlipkartActivity) getActivity(); 

} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if(context instanceof ChangeCurrentFragment) 
    changeCurrentFragment = (ChangeCurrentFragment) context; 

} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    changeCurrentFragment=null; 

} 

public ChangeCurrentFragment onChangeCurrentFragment(){ 

    return changeCurrentFragment; 

} 

public MainFlipkartActivity getBaseActivity() { 

    return activity; 

} 

}

然後擴展都這樣做片段使用BaseFragment 在fra ((MainFlipkartActivity)getBaseActivity())。onFragmentChangeListener(new TwoFKTFragment(),「1」+ new Random()。nextInt());方法返回一個片段到其他像

然後實現這樣的方式onBackPress事件

public class MainFlipkartActivity extends AppCompatActivity 
     implements FragmentManager.OnBackStackChangedListener,ChangeCurrentFragment 
{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main2); 

     getSupportFragmentManager().addOnBackStackChangedListener(this); 
if (null == savedInstanceState) { 
      HomeFragment cameraImportFragment = new HomeFragment(); 
      manageFragment(cameraImportFragment, Const.TAG_HOME); 
     } 
     } 

@Override 
    public void onBackPressed() { 
     if (getSupportFragmentManager().getBackStackEntryCount() == 1) { 
      finish(); 
     } else { 
      super.onBackPressed(); 

     } 
    } 

} 

    public void manageFragment(Fragment fragment, String tag) 
    { 
     FragmentManager fragmentManager=getSupportFragmentManager(); 
     // String f_name=fragment.getClass().getName(); 
     if(!fragmentManager.popBackStackImmediate(tag,0)) 
     { 
      FragmentTransaction ft=fragmentManager.beginTransaction(); 
      ft.replace(R.id.content_frame, fragment, tag); 
      ft.addToBackStack(tag); 
      ft.commit(); 

     } 
    } 




    @Override 
    public void onFragmentChangeListener(Fragment fragment, String tag) { 
     manageFragment(fragment,tag); 
    } 




    @Override 
    public void onBackStackChanged() { 
     FragmentManager fragmentManager=getSupportFragmentManager(); 
     Fragment fr = fragmentManager.findFragmentById(R.id.frame_container); 
     if(fr!=null){ 
      fr.onResume(); 
     } 
    } 
0

,如果你想回到以前的片段替換片段MainActivity傳addToBackStack =真

public void replaceFragment(Fragment fragment, boolean addToBackStack) { 
      FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
      if (addToBackStack) { 
       transaction.addToBackStack(null); 
      } 
      transaction.replace(R.id.container_framelayout, fragment); 
      transaction.commit(); 
      getSupportFragmentManager().executePendingTransactions(); 
     } 



public boolean popFragment() { 
     Log.e("test", "pop fragment: " + getSupportFragmentManager().getBackStackEntryCount()); 
     boolean isPop = false; 
     if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
      isPop = true; 
      getSupportFragmentManager().popBackStack(); 
     } 
     return isPop; 
} 

將此代碼放在您的主要活動中用於後臺處理

@Override 
    public void onBackPressed() { 
     if(!popFragment()) { 
      super.onBackPressed(); 
     } 
    } 
+0

replaceFragment(Search,true);搜索無法在此識別。 下面的代碼正在工作,但標題不變 /* @Override public void onBackPressed(){ FragmentManager fragmentManager = getSupportFragmentManager(); Fragment fragment = fragmentManager.findFragmentById(R.id.flContent);如果(!(片段instanceof搜索)){ FragmentTransaction tx = getSupportFragmentManager()。beginTransaction(); tx.replace(R.id.flContent,new Search()); tx.commit(); } } */ – Ghimire

+0

第一次您需要通過false爲第二個片段,你會真的 –

+0

我得到了解決方案。謝謝man.Jd Prajapati解決方案正在工作。 – Ghimire

相關問題