it-swarm.com.de

Schaltfläche "Zurück" in der Aktionsleiste anzeigen

Ich versuche, einen Back button auf dem Action bar anzuzeigen, um die vorherige Seite/Aktivität oder die Hauptseite (erste Öffnung) zu verschieben . Und ich kann es nicht.

mein code.

ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);

der Code ist in onCreate.

143
Dany Maor

nun, das ist einfach eine Schaltfläche "Zurück" zu zeigen

actionBar.setDisplayHomeAsUpEnabled(true);

dann können Sie das back -Ereignis bei onOptionsItemSelected anpassen

case Android.R.id.home:
this.finish();
return true;
184
fhamicode

Ich denke, onSupportNavigateUp() ist der beste und einfachste Weg, dies zu tun. Überprüfen Sie die folgenden Schritte. Schritt 1 ist notwendig, Schritt 2 hat eine Alternative. 

Schritt 1 zeigt die Zurück-Schaltfläche: Fügen Sie diese Zeile in der onCreate()-Methode hinzu, um die Zurück-Schaltfläche anzuzeigen.

assert getSupportActionBar() != null;   //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true);   //show back button

Schritt 2 Implementierung des Rückklicks: Überschreiben Sie diese Methode

@Override
public boolean onSupportNavigateUp(){  
    finish();  
    return true;  
}

das ist es du bist fertig
OR Schritt 2 Alternative: Sie können der Aktivität in der Manifestdatei Meta als hinzufügen

<meta-data
        Android:name="Android.support.PARENT_ACTIVITY"
        Android:value="MainActivity" />

Edit: Wenn Sie nicht AppCompat Activity verwenden, dann verwenden Sie support Word nicht

getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();`

// And override this method
@Override 
public boolean onNavigateUp(){ 
     finish(); 
     return true; 
}

Vielen Dank an @atariguy für den Kommentar.

152

Die Magie geschieht in onOptionsItemSelected.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case Android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(this, HomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
63

Offizielle Lösung

Fügen Sie diese beiden Code-Snippets zu Ihrer SubActivity hinzu

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case Android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

fügen Sie Metadaten und parentActivity zum Manifest hinzu, um niedrigere sdk zu unterstützen.

 <application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        Android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        Android:name="com.example.myfirstapp.SubActivity"
        Android:label="@string/title_activity_display_message"
        Android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

Referenz hier: http://developer.Android.com/training/implementing-navigation/ancestral.html

43
hoot

Diese Zeilen zu onCreate () hinzufügen

Android.support.v7.app.ActionBar actionBar = getSupportActionBar();
   actionBar.setHomeButtonEnabled(true);
   actionBar.setDisplayHomeAsUpEnabled(true);

und in onOptionItemSelected

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case Android.R.id.home:
                //Write your logic here
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

Hoffe das hilft dir ..!

30
Abhishek

Probieren Sie diesen Code aus und berücksichtigen Sie ihn nur, wenn Sie die Zurück-Taste benötigen.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //YOUR CODE
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    //YOUR CODE
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}
22
Jaime

Fügen Sie auf Ihrer onCreate-Methode Folgendes hinzu:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Beim Definieren der übergeordneten Aktivität in AndroidManifest.xml (der Aktivität, die aufgerufen wird, sobald die Zurück-Schaltfläche in der Aktionsleiste gedrückt wird):

Fügen Sie in Ihrer <activity>-Definition im Manifest die Zeile hinzu:

Android:parentActivityName="com.example.activities.MyParentActivity"
16
Bruno Peres

Ich weiß, ich bin etwas spät dran, konnte dieses Problem jedoch beheben, indem ich die docs direkt befolge. 

Fügen Sie das Metadaten-Tag zu AndroidManifest.xml hinzu (damit das System es weiß)

 <activity
        Android:name=".Sub"
        Android:label="Sub-Activity"
        Android:parentActivityName=".MainChooser"
        Android:theme="@style/AppTheme.NoActionBar">
    <meta-data
        Android:name="Android.support.PARENT_ACTIVITY"
        Android:value=".MainChooser" />
    </activity>

Aktivieren Sie anschließend die Schaltfläche "Zurück" in Ihrer MainActivity.

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

    // my_child_toolbar is defined in the layout file 
    Toolbar myChildToolbar =
        (Toolbar) findViewById(R.id.my_child_toolbar);
    setSupportActionBar(myChildToolbar);

    // Get a support ActionBar corresponding to this toolbar 
    ActionBar ab = getSupportActionBar();

    // Enable the Up button 
    ab.setDisplayHomeAsUpEnabled(true);
    } 

Und du bist alles eingerichtet!

Quelle: Android-Entwicklerdokumentation

8
Avi Parshan

Ich weiß, dass es oben viele hilfreiche Lösungen gibt, aber dieses Mal habe ich diesen Artikel gelesen (aktuelles Android Studio 2.1.2 mit SDK 23). Einige der obigen Methoden funktionieren nicht.

Im Folgenden finden Sie meine Lösung für die Unteraktivität MapsActivity

Zunächst müssen Sie parentActivity in hinzufügen 

AndroidManifest.xml

so was :

<application ... >
    ...
    <!-- Main activity (which has no parent activity) -->
    <activity
        Android:name="com.example.myapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        .....
        Android:parentActivityName=".MainActivity" >
        <!-- Support Parent activity for Android 4.0 and lower -->
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value="com.example.myapp.MainActivity" />
    </activity>
</application>

Stellen Sie zweitens sicher, dass Ihre Unteraktivität AppCompatActivity und nicht FragmentActivity erweitert.

Drittens überschreiben Sie die onOptionsItemSelected()-Methode

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case Android.R.id.home:
                // app icon action bar is clicked; go to parent activity
                this.finish();
                return true;
            case R.id.action_settings:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

Hoffe das wird helfen!

5
postace

Um dies zu erreichen, gibt es einfach zwei Schritte:

Schritt 1: Gehen Sie zu AndroidManifest.xml und fügen Sie diesen Parameter in das Tag <activity> ein - Android:parentActivityName=".home.HomeActivity".

Beispiel:

<activity
    Android:name=".home.ActivityDetail"
    Android:parentActivityName=".home.HomeActivity"
    Android:screenOrientation="portrait" />

Schritt 2: Fügen Sie unter ActivityDetail Ihre action für vorherige Seite/Aktivität hinzu

Beispiel:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case Android.R.id.home:
            onBackPressed();
            return true;
    }
    return super.onOptionsItemSelected(item);
}
4
Vivek Hande

in onCreate-Methode schreiben

Toolbar toolbar = findViewById(R.id.tool);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }
}
@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}
@Override
public void onBackPressed() {
    super.onBackPressed();
    startActivity(new Intent(ActivityOne.this, ActivityTwo.class));
    finish();
}

und das ist die XML-Datei-

<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="@color/colorPrimary"
Android:theme="@style/ThemeOverlay.AppCompat.Dark"
Android:id="@+id/tool">

und in styles.xml ändern Sie es in

Theme.AppCompat.Light.NoActionBar

das ist alles was wir tun müssen.

3
PAWAN LAKHOTIA

Ich habe auf diese Weise gelöst 

@Override
public boolean  onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
        case Android.R.id.home:
            onBackPressed();
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed(){
    Intent backMainTest = new Intent(this,MainTest.class);
    startActivity(backMainTest);
    finish();
}
2
Ardit Zeza

Versuchen Sie das In Ihrem onCreate ()

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

Und für Clickevent,

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case Android.R.id.home:
                // app icon in action bar clicked; goto parent activity.
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
2
Melbourne Lopes

Es könnte zu spät sein, um zu antworten, aber meiner Meinung nach habe ich eine kürzere und funktionellere Lösung.

// Inside your onCreate method, add these.
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);

// After the method's closing bracket, add the following method exactly as it is and voiulla, a fully functional back arrow appears at the action bar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}
1
ndungujan
ActionBar actionBar=getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

@Override
public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) {
        case Android.R.id.home: 
            onBackPressed();
            return true;
        }

    return super.onOptionsItemSelected(item);
}
1
akshay shetty

mein Arbeitscode, um zum Bildschirm zurückzukehren.

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case Android.R.id.home:

        Toast.makeText(getApplicationContext(), "Home Clicked",
                Toast.LENGTH_LONG).show();

        // go to previous activity
        onBackPressed();

        return true;

    }

    return super.onOptionsItemSelected(item);
}
1
Shihab Uddin
 public void initToolbar(){
       //this set back button 
       getSupportActionBar().setDisplayHomeAsUpEnabled(true);
       //this is set custom image to back button
       getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_btn_image);
}


//this method call when you press back button
@Override
public boolean onSupportNavigateUp(){
    finish();
    return true;
}
1

Das ist einfach und funktioniert für mich sehr gut

fügen Sie dies in der onCreate () -Methode hinzu

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

fügen Sie diese außerhalb der oncreate () -Methode hinzu

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}
1
Muhaiminurabir

In oncreate (); schreibe diese Zeile->

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

dann implementieren Sie die Methode unten in dieser Klasse

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case Android.R.id.home:
        // app icon in action bar clicked; go home
      onBackPressed();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
0
Manthan Patel

Manifest.xml

<activity
            Android:name=".Activity.SecondActivity"
            Android:label="Second Activity"
            Android:parentActivityName=".Activity.MainActivity"
            Android:screenOrientation="portrait"></activity>
0

Fügen Sie folgenden Code in die onCreate-Funktion ein:

getSupportActionBar (). setDisplayHomeAsUpEnabled (true);

Und dann überschreiben: @Override public boolean onOptionsItemSelected (MenuItem item) {onBackPressed (); return true; }

0
user7347514