Navigation drawer звонит в активность, которая сдерживается: как предотвращать это?

Когда я нажимаю на любую из статей navigation drawer, этот сдерживается. Или же, активность, в которую я позвонил, нажав на статью, сдерживается, сверху на content_main.

Точка состоит в том, что я не хочу, чтобы активность, в которую я звоню, сдержалась, потому что, когда он сдерживается, и я выхожу ему на кнопку 'назад' мобильного телефона, этот солится приложения, и он не был бы должен вытекать, был бы должен возвращаться в главную активность, которая content_main.

Ясный пример того, что я хочу, - приложение Gmail, которое приходит в мобильных телефонах.


Здесь - код MainActivity.java:

package bo.edu.brynnerflores.operativeinvestigation;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import static bo.edu.brynnerflores.operativeinvestigation.R.id.what_is_operative_research;
import static bo.edu.brynnerflores.operativeinvestigation.R.id.which_is_the_simplex_method;

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    /*FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });*/

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    Intent intent;

    if (id == R.id.simplex) {
        Toast.makeText(this, "Simplex", Toast.LENGTH_SHORT).show();

    } else if (id == R.id.double_phase) {
        Toast.makeText(this, "Doble Fase", Toast.LENGTH_SHORT).show();
    } else if (id == R.id.penalization) {
        Toast.makeText(this, "Penalizacion", Toast.LENGTH_SHORT).show();
    } else if (id == R.id.what_is_operative_research) {
        what_is_operative_research what_is_operative_research = new what_is_operative_research();
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.content_main, what_is_operative_research).commit();
    } else if (id == which_is_the_simplex_method) {
        which_is_the_simplex_method which_id_the_simplex_method = new which_is_the_simplex_method();
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.content_main, which_id_the_simplex_method).commit();
    } else if (id == R.id.which_is_the_method_of_the_double_phase) {
        which_is_the_method_of_the_double_phase which_is_the_method_of_the_double_phase = new which_is_the_method_of_the_double_phase();
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.content_main, which_is_the_method_of_the_double_phase).commit();
    } else if (id == R.id.which_is_the_method_of_penalization){
        which_is_the_method_of_penalization which_is_the_method_of_penalization = new which_is_the_method_of_penalization();
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.content_main, which_is_the_method_of_penalization).commit();
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}
}

Этот код, который я использую, чтобы звонить в остальную активность, когда я нажимаю в любой из статей navigation drawer:

FragmentManager manager = getSupportFragmentManager();
    manager.beginTransaction().replace(R.id.content_main, which_is_the_method_of_penalization).commit();

Но этот код то, что он делает, состоит remplazar, в том, чтобы класться на content_main, и я не хочу, чтобы я сдержался. Есть какой-то код или что-то, что могло бы делаться для того, чтобы этот не сдержался?

2
задан 17.01.2017, 15:58
1 ответ

Сначала я рекомендую тебе использовать Переключатель вместо столького укрытого if.

У меня есть этот код в моем app, чтобы меняться fragment, будь обновлен в новую функциональность. Я надеюсь, что он ты имеет добро.

    drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
    navView = (NavigationView)findViewById(R.id.navview);
    /**
     * Arranca el content_frame con el fragmentMain
     */
    fragment = new TuFragment1();
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.content_frame, fragment)
            .commit();
    /**
     * Esta acción ocurre cuando se abre el navigation view
     * Por medio del botón ic_nac_menu o deslizando el dedo de izquierda a derecha
     */
    navView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {

                    boolean fragmentTransaction = false;

                    /**
                    *Opciones para el menú de selección de la aplicación
                    * */

                    switch (menuItem.getItemId()) {
                        case R.id.menu_seccion_1: //Caso 1
                            fragment = new Tufragment1();
                            fragmentTransaction = true;
                            getSupportActionBar().setTitle(getText(R.string.app_name));
                            break;
                        case R.id.menu_seccion_2: //Caso 2
                            fragment = new TuFRagment2();
                            fragmentTransaction = true;
                            getSupportActionBar().setTitle(menuItem.getTitle());
                            break;
                        case R.id.menu_seccion_3: //Caso 3
                            fragment = new TuFragment3();
                            fragmentTransaction = true;
                            getSupportActionBar().setTitle(menuItem.getTitle());
                            break;                            
                    }

                    /**
                     *  Fin de opciones
                     *  cambia al fagment seleccionado y cambia el título del actionbar
                     *  Se ha comentado el cambio de título para hacerlo a la hora de la selección del cada caso
                     * */

                    if (fragmentTransaction) {
                        getSupportFragmentManager().beginTransaction()
                                .replace(R.id.content_frame, fragment)
                                .commit();

                        menuItem.setChecked(true);
                        //getSupportActionBar().setTitle(menuItem.getTitle());
                    }

                    drawerLayout.closeDrawers();

                    return true;
                }
            }
    );
0
ответ дан 24.11.2019, 11:58
  • 1
    Ehhh не.... этот có я говорю: getSupportFragmentManager () .beginTransaction () .replace (R.id.content_frame, fragment) .commit (); Он это делает точно q я не хочу.... .replace это q он делает - remplazar, сдерживается на главной активности и из-за этого q, когда нажимают на botó n d ' Atrá s' этот вытекает из aplicació n и не deberí чтобы вытекать deberí чтобы возвращаться в главную активность.... nose, если я позволяю себе понимать, но это то q я ищу –  06.01.2017, 23:36

Попытайся с:

public void onBackPressed()
{
    FragmentManager fm = getActivity().getSupportFragmentManager();
    fm.popBackStack();
}
0
ответ дан 03.12.2019, 18:27