2015-06-09 15 views
7

Zaimplementowałem przycisk Back dla wszystkich działań z wyjątkiem MainActivity. Mój problem polega na tym, że mam również przycisk Back w tym MainActivity.Przycisk Wstecz w ActionBar na MainActivity

Mam nadzieję, że już importowane właściwą klasę:

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> 

Dlaczego ja dostać przycisku Wstecz w MainActivity też?

+1

zmień to ustawienie setDisplayHomeAsUpEnabled (false), zamiast tego użyj ikony aplikacji, aby zamknąć aplikację (cokolwiek chcesz użyć) lub ustaw inną ikonę za pomocą metody getSupportActionBar(). SetHomeAsUpIndicator (R.drawable.ic_menu); –

+0

Bardzo łatwo dziękuję ... Czy możesz powiedzieć, dlaczego moja aplikacja ulega awarii, gdy kliknę przycisk Wstecz w innych działaniach? – korunos

+0

Dziękuję, ale nie mogę znaleźć getSupportActionBar() – korunos

Odpowiedz

7

Pierwsze pytanie brzmi: Co masz na myśli przez "Back-Button"?

  • Masz na myśli przycisk w każdym urządzeniu z Androidem w lewym dolnym rogu? Nie możesz wyłączyć tego. Ale nazywa się "Back-Button" w rzeczywistości Androida. Czasami jest to nawet część sprzętu!
  • Masz na myśli przycisk, który pokazuje mała strzałka skierowana w lewo, tuż obok ikony aplikacji w lewym górnym rogu aplikacji? Ten przycisk nazywa się "Up-Button" w świecie Androida. Ten jeden jest pokazany w główną działalność z powodu tej linii w kodzie:

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    

    w metodzie

    protected void onCreate(Bundle savedInstanceState) 
    

    Należy więc zabrać tę linię. Aby wyłączyć nie tylko wygląd przycisku, ale również funkcjonalność z nim , trzeba przyjrzeć się tej części kodu:

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

    Tutaj trzeba usunąć część

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

EDIT: Ale jeśli rzeczywiście chcą mieć "Up-Buttona" widoczne wewnątrz Aktywny, ty

  • trzeba ustawić kod

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    

    w onCreate() - metoda tej działalności!

  • stanowić nadrzędny aktywny w manifest.xml (co jesteś już robi), na przykład:

    android:parentActivityName=".ListViewActivity" 
    
  • i umieścić part

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

    do działalności, która powinien mieć "Up-Button".

Jeśli masz na myśli coś innego, proszę podać swoje pytanie i dostarczyć więcej kodu :)

kilka przydatnych linków:

+0

Zgadzam się, dzięki, to rozwiązanie sprawdziło się. Czasami późno w nocy zapominasz o wszystkim, co skopiowałeś z innych klas, aby zaoszczędzić czas. lol –

Powiązane problemy