2016-05-19 11 views
1

Ich benutze die Navigationsleiste und die Methode von OnBackPressed nicht ausgeführt, wenn ich auf den Pfeil der Symbolleiste klicken, aber wenn ich auf der Rückseite des unteren Bedienfelds der Movil läuft, läuft. Ich verstehe nicht, wie man das gleiche tut, aber mit der Pfeiltaste.Wie benutzt man onBackPressed in Android der Navigationsleiste, wenn man auf das Pfeilsymbol klickt?

public class MainActivity erweitert AppCompatActivity implementiert NavigationView.OnNavigationItemSelectedListener, BlankFragment.OnFragmentInteractionListener {

ActionBarDrawerToggle toggle; 
DrawerLayout drawer; 

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

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.setFocusableInTouchMode(true); 

    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); 

    getSupportFragmentManager().beginTransaction() 
      .replace(R.id.vista, new BlankFragment()) 
      .addToBackStack(null) 
      .commit(); 

} 


@Override 
public void onBackPressed() { 
    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; 
    } 
    if (id == android.R.id.home) { 
     onBackPressed(); 
    } 
    return super.onOptionsItemSelected(item); 
} 

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

    if (id == R.id.nav_camera) { 

    } else if (id == R.id.nav_gallery) { 

    } else if (id == R.id.nav_slideshow) { 

    } else if (id == R.id.nav_manage) { 

    } else if (id == R.id.nav_share) { 

    } else if (id == R.id.nav_send) { 

    } 

    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

@Override 
public void onFragmentInteraction() { 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportFragmentManager().beginTransaction() 
      .replace(R.id.vista, new BlankFragment2()) 
      .addToBackStack(null) 
      .commit(); 

} 

}

+0

Mögliches Duplikat von [Wie ba ck button auf ActionBar] (http://stackoverflow.com/questions/9252354/how-to-customize-the-back-button-on-actionbar) –

+0

sind Sie es aus menu.xml aufblasen? – Mohit

Antwort

0

Sie können Thema

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo"> 
    <item name="android:homeAsUpIndicator">@drawable/ic_your_icon</item> 
</style> 

Oder

012 in onCreate() ändern
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_your_icon); 
+0

Ich probiere das, aber es ist immer die Navigationsleiste ... –

0

Sie können dies versuchen:

toolbar.setNavigationOnClickListener(yourOnClickListener); 
1

Zuerst den Zurück-Pfeil der Aktionsleiste ermöglichen ..

ActionBar actionBar = getSupportActionBar(); 
if(actionBar!=null){ 
    actionBar.setDisplayHomeAsUpEnabled(true); 
} 

Zweite Verwendung android.R.id.home auf Taste für den Zugriff auf onOptionsItemSelected()

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){   
     case android.R.id.home: 
      onBackPressed(); 
     break; 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

Ich aktiviere den Zurück-Pfeil auf der Schnittstelle onFragmentInteraction() und mache die Änderungen, aber wenn ich auf den Pfeil klicke, wird onOptionsItemSelected nicht aufgerufen. Ich habe das in einem anderen Projekt ohne Navigationsschublade versucht und mache die Änderungen. –

Verwandte Themen