2015-06-09 19 views
7

Ho implementato un pulsante di back-up per tutte le attività tranne lo MainActivity. Il mio problema è che ho un pulsante di back in quello MainActivity.Pulsante Indietro in ActionBar su MainActivity

Spero di aver importato la classe giusta:

import android.support.v4.app.NavUtils; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     getActionBar().setDisplayHomeAsUpEnabled(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(); 

    switch (item.getItemId()) { 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
     case R.id.ueber: 
      startActivity(new Intent(this, menu_main_Activity.class)); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

AndroidManifest:

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/levox" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".ListViewActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".ListTasksActivity" 
     android:label="@string/projekte" 
     android:parentActivityName=".ListViewActivity"> 
     </activity> 
    <activity android:name=".ListSingleTaskActivity" 
     android:label="@string/tasks" 
     android:parentActivityName=".ListTasksActivity"> 
    </activity> 
    <activity android:name=".menu_main_Activity"/> 
</application> 

Perché ho un Back-Button a MainActivity troppo?

+1

cambia questo setDisplayHomeAsUpEnabled (false), invece di usare l'icona della tua app per uscire dall'applicazione (qualunque cosa tu voglia usare), o impostare un'altra icona usando getSupportActionBar(). SetHomeAsUpIndicator (R.drawable.ic_menu); –

+0

così facile grazie ... Puoi dire il motivo per cui la mia app si arresta in modo anomalo se faccio clic sul pulsante Indietro su altre attività? – korunos

+0

Grazie, ma non riesco a trovare getSupportActionBar() – korunos

risposta

7

La prima domanda è: Cosa intendi con "Pulsante Indietro"?

  • Intendi il pulsante che si trova in ogni dispositivo Android in basso a sinistra? Non puoi disabilitare quello. Ma è chiamato "Pulsante Indietro" nell'universo Android in realtà. A volte è persino parte dell'hardware!
  • Intendi il pulsante che viene mostrato da una piccola freccia che dirige verso sinistra, proprio accanto all'app-Icon in alto a sinistra della tua applicazione? Il pulsante è chiamato "Pulsante di accensione" nell'universo Android. Questo è mostrato nella tua MainActivity a causa di questa riga nel codice:

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    

    nel metodo

    protected void onCreate(Bundle savedInstanceState) 
    

    Così si dovrebbe togliere questa linea. Per disattivare non solo l'aspetto del pulsante, ma anche la funzionalità di esso, è necessario dare un'occhiata a questa parte del codice:

    switch (item.getItemId()) { 
    case android.R.id.home: 
        NavUtils.navigateUpFromSameTask(this); 
        return true; 
    case R.id.ueber: 
        startActivity(new Intent(this, menu_main_Activity.class)); 
        return true; 
    } 
    

    Qui, è necessario rimuovere la parte

    case android.R.id.home: 
        NavUtils.navigateUpFromSameTask(this); 
        return true; 
    

EDIT: Ma se effettivamente vuole avere la "Up-Button" visibile all'interno di un Attività, si

  • necessario impostare il codice

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    

    nel onCreate() - Metodo di detta attività!

  • forniscono un genitore-Activity nel manifest.XML (quello che stai facendo già), per esempio:

    android:parentActivityName=".ListViewActivity" 
    
  • e mettere la parte

    case android.R.id.home: 
        NavUtils.navigateUpFromSameTask(this); 
        return true; 
    

    in attività che avrà il "pulsante in alto".

Se vuoi dire qualsiasi altra cosa, si prega di specificare la tua domanda e di fornire più codice :)

Alcuni link utili:

+0

Sono d'accordo, grazie, questa soluzione ha funzionato per me. A volte a tarda notte dimentichi tutto ciò che hai copiato da altre classi per risparmiare tempo. LOL –

Problemi correlati