1

wird eine Aktivität in meinem Manifest wie folgt erklärt:Android - Wie parentalActivityName Attributwert programmgesteuert erhalten?

<activity 
     android:name=".TicketingHomeActivity" 
     android:label="@string/title_activity_ticketing_home" 
     android:parentActivityName=".HomeActivity" /> 

Wie kann ich den Wert von android:parentActivityName programmatisch bekommen?

Ich muss dies tun, da ich gerade meine ActionBar durch eine Toolbar ersetzt habe, aber getSupportActionBar().setDisplayShowHomeEnabled(true) zeigt jetzt den Pfeil nach oben in einer Aktivität, auch wenn kein Attribut parentActivityName im Manifest festgelegt ist. Daher möchte ich in meiner BaseActivity feststellen, dass kein parentActivityName gesetzt wurde, so dass ich den Pfeil nach oben entsprechend ausblenden kann.

Hinweis: Diese Frage ist kein Duplikat von this question, da ich speziell frage, wie der Wert des android:parentActivityName-Attributs programmgesteuert ermittelt wird.

+0

Mögliche Duplikate von [Wie Name Elternaktivität in Unteraktivität zu bekommen] (http://stackoverflow.com/questions/9885994/how-get-name-parent-activity-in-child-activity) –

Antwort

1

Sie können auf Ihrer BaseActivity aufrufen.

Es wird eine Absicht zurückgegeben. Dann können Sie getComponent() anrufen, die eine ComponentName zurückgibt, von wo Sie die android:parentActivityName (Klassenname) erhalten können.

EDIT

Code-Beispiel:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    if (toolbar != null) { 

     toolbar.setTitle(getTitle()); 

     Intent parentActivityIntent = getParentActivityIntent(); 
     boolean doesParentActivityExist; 
     if (parentActivityIntent == null) { 
      doesParentActivityExist = false; 
     } 
     else { 
      ComponentName componentName = parentActivityIntent.getComponent(); 
      doesParentActivityExist = (componentName.getClassName() != null); 
     } 
     //toolbar.setSubtitle("Has parent: " + doesParentActivityExist); 

     setSupportActionBar(toolbar); 
     ActionBar actionBar = getSupportActionBar(); 
     if (actionBar != null && doesParentActivityExist) { 

      actionBar.setDisplayHomeAsUpEnabled(doesParentActivityExist); 
      actionBar.setHomeButtonEnabled(doesParentActivityExist); 

      actionBar.setDefaultDisplayHomeAsUpEnabled(doesParentActivityExist); 
      actionBar.setDisplayShowHomeEnabled(doesParentActivityExist); 

     } 
    } 
0

einfach, wenn Sie Attribut in manifest nicht gesetzt haben dann für diese Tätigkeit setDisplayShowHomeEnabled() Methode nicht verwenden.
Ansonsten eine der Art und Weise ist Sie Eltern Aktivitätsnamen in putExtra an die Mutter Aktivität setzen kann (Calling Aktivität) und die Tätigkeit in den Kindern erhalten (Called Aktivität)

Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
    intent.putExtra("PARENT_ACTIVITY_NAME", "ThisActivityName"); 
    startActivity(intent); 

Und dann in Kind erhalten wie

String parentActivityName = intent.getStringExtra("PARENT_ACTIVITY_NAME"); 

Und für diesen Zweck This Answer kann auch funktionieren.