简体   繁体   English

单击返回按钮后如何从片段返回主布局

[英]How to go back to main layout from a fragment on click on back button

I am trying to create an app. 我正在尝试创建一个应用。 I want to go back to my main layout from a fragment when click on back button in the fragment Using the following code- 当我单击片段中的“后退”按钮时,我想从片段返回主布局。

 public class MainActivity extends FragmentActivity implements OnMapReadyCallback, ConnectionCallbacks, OnConnectionFailedListener,LocationListener{
 DrawerLayout mDrawerLayout;
 ListView mDrawerList;
 @SuppressWarnings("deprecation")
ActionBarDrawerToggle mDrawerToggle;
 String mTitle="";
 private final String  TAG = this.getClass().getSimpleName();

    LocationRequest mLocationRequest;
    GoogleApiClient mGoogleApiClient;

    LatLng latLng;
    GoogleMap mMap;
    SupportMapFragment mFragment;
    Marker CurrentMarker,NearbyPlace,FindMarker;
    EditText editplace = null;
    Button findbtn = null;
    boolean firstRun = true;
    private Boolean exit = false;


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

    //for connectivity service
    ConnectivityManager cManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
    NetworkInfo nInfo = cManager.getActiveNetworkInfo();
    if (nInfo != null && nInfo.isConnected()) {
        Toast.makeText(this, "Network is available ", Toast.LENGTH_SHORT).show();

        AdView adView = (AdView)findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder()
        //.addTestDevice("abc")
        .build();
        adView.loadAd(adRequest);
    mFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
    mFragment.getMapAsync(this);

    }


    else{
        Toast.makeText(this, "Network is not available ", Toast.LENGTH_SHORT).show();
        Fragment newFragment;
        FragmentTransaction transaction = getFragmentManager().beginTransaction();
        newFragment = new NetworkCheck();
        transaction.replace(R.id.content_frame, newFragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }

    editplace = (EditText) findViewById(R.id.editplace);
    findbtn = (Button) findViewById(R.id.findbtn);

    setListnerOnWidget();

    mTitle = (String) getTitle();
    // Getting reference to the DrawerLayout
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.drawer_list);

    // Getting reference to the ActionBarDrawerToggle
    mDrawerToggle = new ActionBarDrawerToggle( this,
        mDrawerLayout,
        R.drawable.ic_drawer,
        R.string.drawer_open,
        R.string.drawer_close){

            /** Called when drawer is closed */
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu();
            }

            /** Called when a drawer is opened */
            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle("Select a menu");
                invalidateOptionsMenu();
            }
    };

    // Setting DrawerToggle on DrawerLayout
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerToggle.setDrawerIndicatorEnabled(true);

    // Creating an ArrayAdapter to add items to the listview mDrawerList
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
        getBaseContext(),
        R.layout.drawer_list_item ,
        getResources().getStringArray(R.array.menu)
    );

    mDrawerList.setAdapter(adapter);

    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setDisplayHomeAsUpEnabled(true);


    // Setting item click listener for the listview mDrawerList
    mDrawerList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent,
            View view,
            int position,
            long id) {
            displayView(position);
            // Updating the action bar title
            String[] menu = getResources().getStringArray(R.array.menu);
            mTitle = menu[position];

            mDrawerLayout.closeDrawer(mDrawerList);

        }

        private void displayView(int position) {
            // TODO Auto-generated method stub
            Fragment newFragment;
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            switch (position) {
            case 0:

                newFragment = new Help();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                Log.e(TAG, "help button is clicked");
                break;

            case 1:

                newFragment = new ContactUs();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                Log.e(TAG, "ContactUs button is clicked");
                break;

              case 2:
                  transaction.addToBackStack(null);
                try
                { Intent i = new Intent(Intent.ACTION_SEND);  
                  i.setType("text/plain");
                  i.putExtra(Intent.EXTRA_SUBJECT, "My application name");
                  String sAux = "\nLet me recommend you this application\n\n";
                  sAux = sAux + "https://play.google.com/store/apps/details?id=com.iqwiner\n\n";
                  i.putExtra(Intent.EXTRA_TEXT, sAux);  
                  startActivity(Intent.createChooser(i, "Choose an action"));

                }
                catch(Exception e)
                { //e.toString();
                }   
                Log.e(TAG, "share button is clicked");
                break;

              case 3:
                newFragment = new Suggestion_Address();
                transaction.replace(R.id.content_frame, newFragment);
                transaction.addToBackStack(null);
                transaction.commit();
                Log.e(TAG, "Suggestion Address button is clicked");
                break;

            }

        }

    });



}

Please tell me how to go back to my main layout from a fragment layout when click on back button.. 请告诉我如何在单击“后退”按钮时从片段布局返回到主布局。

Thanks 谢谢

Try this in your activity 在您的活动中尝试一下

@Override
public void onBackPressed() {
  if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
    getSupportFragmentManager().popBackStackImmediate();
  } else {
    super.onBackPressed();
  }
}

Here is a code which navigates from activity to fragment and on pressing back button it navigates back to activity. 这是一个从活动导航到片段的代码,按返回按钮可导航回到活动。

MainActivity to fragment and back to MainActivity on pressing back button MainActivity片段并按返回按钮返回MainActivity

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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