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

时间:2016-05-19 07:49:17

标签: java android

我正在尝试创建一个应用。我想在单击片段中的后退按钮时从片段返回到我的主要布局使用以下代码 -

 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;

            }

        }

    });



}

请告诉我如何在单击后退按钮时从片段布局返回主布局。

由于

2 个答案:

答案 0 :(得分:0)

在您的活动中尝试此操作

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

答案 1 :(得分:0)

这是一个从活动导航到片段的代码,按下后退按钮导航回活动。

MainActivity to fragment and back to MainActivity on pressing back button