1

活動は、このように私のマニフェストで宣言されています。Android - parentActivityName属性値をプログラムで取得する方法

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

私はプログラム的android:parentActivityNameの値を取得できますか?

私は自分のActionBarをツールバーに置き換えたのでこれを行う必要がありますが、getSupportActionBar().setDisplayShowHomeEnabled(true)はマニフェストにparentActivityName属性が設定されていない場合でもアクティビティの上矢印を表示しています。したがって、BaseActivityでparentActivityNameが設定されていない場合は検出したいので、上矢印を非表示にすることができます。

NB - 具体的にはandroid:parentActivityName属性の値をプログラムで検出する方法を尋ねているので、この質問はthis questionと重複していません。

+0

[子アクティビティで名前の親アクティビティを取得する方法](http://stackoverflow.com/questions/9885994/how-get-name-parent-activity-in-child-activity) –

答えて

1

BaseActivityにgetParentActivityIntent()と電話することができます。

インテントが返されます。次にgetComponent()を呼び出してComponentNameを返します。ここからandroid:parentActivityName(クラス名)を取得できます。

EDIT

コード例:

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

あなたはmanifestに属性を設定していないだけであれば、その活動のためにsetDisplayShowHomeEnabled()メソッドを使用しないでください。
それ以外の場合は片道のは、あなたが(活動を呼び出す)親アクティビティにputExtraに親アクティビティ名を入れて、(活動呼び出さ)子アクティビティのそれを受け取る

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

そして

のような子で受け取ることができています
String parentActivityName = intent.getStringExtra("PARENT_ACTIVITY_NAME"); 

また、この目的でThis Answerも機能する場合があります。

関連する問題