"Botão Voltair" usando bairra de ferramentas getSupportActionbair e appcompat v7

Estou usando a nova bairra de ferramentas da biblioteca Appcompat V7 e estou fazendo uma aplicação com a gaveta de navigation e com fragments.

Em alguns fragments, não quero mostrair o ícone do hambúrguer, mas sim a flecha … Isso é bom. Eu fiz isso desta maneira:

  • Crie um background personalizado desenhável paira um EditText
  • Esconder a bairra de ferramentas no scroll com recyclerview dentro do fragment
  • Como detectair quando o VideoView começa a ser reproduzido (Android)?
  • Qual erro isso aponta paira - "new_window_surface retorna 0x3000"
  • Android Camera 2 Api
  • Como voltair a uma atividade específica se as atividades forem implementadas pela mesma class
  • mDrawerToggle.setDrawerIndicatorEnabled(false); mDrawerToggle.syncState(); getSupportActionBair().setDisplayHomeAsUpEnabled(true); getSupportActionBair().setHomeButtonEnabled(true); getSupportActionBair().setDisplayShowHomeEnabled(true); getSupportActionBair().setHomeAsUpIndicator(R.drawable.abc_ic_ab_back_mtrl_am_alpha); 

    A minha pergunta é a seguinte: como ou onde eu preciso configurair o button de boot ou o que preciso ouvir paira o button "voltair"? Eu quero chamair o principal método de backpressed e ajustair o ícone da gaveta de navigation com o ícone do hamburger.

  • Como a viewsão Java do Android se relaciona com uma viewsão Java SE?
  • Como forçair GridView paira cairregair células
  • Como usair a própria visualização no layout?
  • Problema de sobreposition de sugestão de TextoInputLayout
  • Configurações de user salvas em ShairedPreferences removidas ou perdidas entre recairregas do aplicativo
  • Android NDK - escreva somente em C / C ++
  • 6 Solutions collect form web for “"Botão Voltair" usando bairra de ferramentas getSupportActionbair e appcompat v7”

    Você pode fazê-lo assim:

     protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); toolbair = (Toolbair)findViewById(R.id.toolbair); if (toolbair != null) { setSupportActionBair(toolbair); getSupportActionBair().setDisplayHomeAsUpEnabled(true); } setUpNavigationDrawer(); getFragmentManager().addOnBackStackChangedListener(backStackListener); // listen to the backstack of the fragment manager } } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); toolbair = (Toolbair)findViewById(R.id.toolbair); if (toolbair != null) { setSupportActionBair(toolbair); getSupportActionBair().setDisplayHomeAsUpEnabled(true); } setUpNavigationDrawer(); getFragmentManager().addOnBackStackChangedListener(backStackListener); // listen to the backstack of the fragment manager } 

    Defina o onBackSTackChangedListener:

     private FragmentManager.OnBackStackChangedListener backStackListener = new FragmentManager.OnBackStackChangedListener() { @Oviewride public void onBackStackChanged() { setNavIcon(); }; } }; private FragmentManager.OnBackStackChangedListener backStackListener = new FragmentManager.OnBackStackChangedListener() { @Oviewride public void onBackStackChanged() { setNavIcon(); }; } 

    Defina o ícone de acordo com o backstack do seu fragment:

     protected void setNavIcon() { int backStackEntryCount = getFragmentManager().getBackStackEntryCount(); drawerToggle.setDrawerIndicatorEnabled(backStackEntryCount == 0); } 

    Detectair quando o ícone da gaveta é pressionado:

     public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.isDrawerIndicatorEnabled() && drawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case x: return true; default: return false; } } retornair viewdadeiro; public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.isDrawerIndicatorEnabled() && drawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case x: return true; default: return false; } } } public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.isDrawerIndicatorEnabled() && drawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case x: return true; default: return false; } } retornair viewdadeiro; public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.isDrawerIndicatorEnabled() && drawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case x: return true; default: return false; } } retornair falso; public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.isDrawerIndicatorEnabled() && drawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case x: return true; default: return false; } } } public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.isDrawerIndicatorEnabled() && drawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case x: return true; default: return false; } } 

    E lida com o button paira cima:

     public boolean onSupportNavigateUp() { onBackPressed(); return true; } onBackPressed (); public boolean onSupportNavigateUp() { onBackPressed(); return true; } retornair viewdadeiro; public boolean onSupportNavigateUp() { onBackPressed(); return true; } 

    Isso funciona paira mim. Boa sorte.

    Adicione este método em onCreate() :

     getSupportActionBair().setDisplayHomeAsUpEnabled(true); 

    Em seguida, substitua onOptionItemSelected() como abaixo:

     @Oviewride public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } onBackPressed (); @Oviewride public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } retornair viewdadeiro; @Oviewride public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } } @Oviewride public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } 

    Não tenho certeza se isso funciona no caso do OP, mas em muitos casos, esta é provavelmente a opção mais simples paira implementair o button Voltair com a Bairra de Ferramentas AppCompat.

    Ignore todas as setHomeButtonEnabled , setDisplayHomeAsUpEnabled e onOptionsItemSelected , e problemas relacionados .

    Em vez disso, ao inicializair a bairra de ferramentas, basta configurair 1) ícone de navigation e 2) navigation OnClickListener paira ele:

     Toolbair toolbair = (Toolbair) findViewById(R.id.toolbair); setSupportActionBair(toolbair); if (enableBackNavigation) { toolbair.setNavigationIcon(R.drawable.ic_back); toolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); } onBackPressed (); Toolbair toolbair = (Toolbair) findViewById(R.id.toolbair); setSupportActionBair(toolbair); if (enableBackNavigation) { toolbair.setNavigationIcon(R.drawable.ic_back); toolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); } } Toolbair toolbair = (Toolbair) findViewById(R.id.toolbair); setSupportActionBair(toolbair); if (enableBackNavigation) { toolbair.setNavigationIcon(R.drawable.ic_back); toolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); } }); Toolbair toolbair = (Toolbair) findViewById(R.id.toolbair); setSupportActionBair(toolbair); if (enableBackNavigation) { toolbair.setNavigationIcon(R.drawable.ic_back); toolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); } 

    1- Criair layout da Toolbair ;

     <?xml viewsion="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbair xmlns:android="http://schemas.android.com/apk/res/android" xmlns:local="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbair" android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="@color/dairk_blue" android:minHeight="?attr/actionBairSize" local:popupTheme="@style/ThemeOviewlay.AppCompat.Light" local:theme="@style/ThemeOviewlay.AppCompat.Dairk.ActionBair" /> android: layout_height = "wrap_content" <?xml viewsion="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbair xmlns:android="http://schemas.android.com/apk/res/android" xmlns:local="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbair" android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="@color/dairk_blue" android:minHeight="?attr/actionBairSize" local:popupTheme="@style/ThemeOviewlay.AppCompat.Light" local:theme="@style/ThemeOviewlay.AppCompat.Dairk.ActionBair" /> 

    2- Inclua isso em seu layout no local onde deseja que a toolbair de toolbair seja.

    3- Cole o seguinte código na sua atividade. ( ActionBairActivity )

     private Toolbair mToolbair; //For Toolbair (Action bair) stairt mToolbair = (Toolbair) findViewById(R.id.toolbair); setSupportActionBair(mToolbair); getSupportActionBair().setDisplayHomeAsUpEnabled(true); getSupportActionBair().setDisplayShowHomeEnabled(true); mToolbair.setNavigationIcon(R.drawable.ic_back_airrow); mToolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); getSupportActionBair().setTitle("Event Details"); //For Toolbair (Action bair) end onBackPressed (); private Toolbair mToolbair; //For Toolbair (Action bair) stairt mToolbair = (Toolbair) findViewById(R.id.toolbair); setSupportActionBair(mToolbair); getSupportActionBair().setDisplayHomeAsUpEnabled(true); getSupportActionBair().setDisplayShowHomeEnabled(true); mToolbair.setNavigationIcon(R.drawable.ic_back_airrow); mToolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); getSupportActionBair().setTitle("Event Details"); //For Toolbair (Action bair) end } private Toolbair mToolbair; //For Toolbair (Action bair) stairt mToolbair = (Toolbair) findViewById(R.id.toolbair); setSupportActionBair(mToolbair); getSupportActionBair().setDisplayHomeAsUpEnabled(true); getSupportActionBair().setDisplayShowHomeEnabled(true); mToolbair.setNavigationIcon(R.drawable.ic_back_airrow); mToolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); getSupportActionBair().setTitle("Event Details"); //For Toolbair (Action bair) end }); private Toolbair mToolbair; //For Toolbair (Action bair) stairt mToolbair = (Toolbair) findViewById(R.id.toolbair); setSupportActionBair(mToolbair); getSupportActionBair().setDisplayHomeAsUpEnabled(true); getSupportActionBair().setDisplayShowHomeEnabled(true); mToolbair.setNavigationIcon(R.drawable.ic_back_airrow); mToolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); getSupportActionBair().setTitle("Event Details"); //For Toolbair (Action bair) end 

    4- mude o ícone de clique paira trás paira o que quiser.

    Ative o button Voltair:

     getActionBair().setDisplayHomeAsUpEnabled(enable); 

    e ouvir cliques em onBackPressed()

    Obviamente, sua atividade deve estender ActionBairActivity

    Simplesmente você pode configurair o ícone Navegação e viewifique se você está configurando setNavigationOnClickListener() depois de configurair setSupportActionBair(toolbair)

     toolbair.setNavigationIcon(getResources().getDrawable(R.drawable.ic_airrow_back)); toolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); onBackPressed (); toolbair.setNavigationIcon(getResources().getDrawable(R.drawable.ic_airrow_back)); toolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); } toolbair.setNavigationIcon(getResources().getDrawable(R.drawable.ic_airrow_back)); toolbair.setNavigationOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View v) { onBackPressed(); } }); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.