2

AppCompatActivityを拡張し、を使用してActionBarを設定しています。setTitle()は異なる時刻に異なる動作をします

タイトルの設定には少し混乱があります。

私が行う場合は - 私が見る何

Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar); 
setSupportActionBar(toolbar); 
toolbar.setTitle("Title 1"); // Does not work 
setTitle("Title 2"); // Works 
getSupportActionBar().setTitle("Title 3"); // Works 
setTitle("Title 4"); // Does not work. Why? 

getSupportActionBar().setTitle()のタイトルのために新しいビューを作成し、その後、活動はそれへの参照を失っているということです。 これは意図された動作ですか、Androidのバグですか?

答えて

1

setSupportActionBar(Toolbar),に電話すると、アクションバーがタイトルの処理を担当するため、getSupportActionBar().setTitle("My Title");に電話してカスタムタイトルを設定する必要があります。

またtoolbar.setTitle("My title");は、以下のような問題を引き起こす可能性があり、このリンクをチェック: - AndroidアプリでToolbar.setTitle方法は効果がありませんが - タイトル

そしてtoolbarは、アクションバーの一般的な形式であるように、アプリケーション名が表示されます。

レイアウトウィジェットとして複数のツールバーを使用できますが、アクションはできません。

したがって、より良いアプローチは、あなたの行の末尾を追加getSupportActionBar().setTitle("My Title");

+1

はまた、このリンクをチェック??? –

+0

あなたの答えは私になぜtoolbar.setTitle();この場合は動作しません。 –

1

コピーこのライン

setSupportActionBar(toolbar); 

を使用することです。

Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar);  
setSupportActionBar(toolbar); 
toolbar.setTitle("Title 1"); 
setTitle("Title 2"); 
getSupportActionBar().setTitle("Title 3"); 
setTitle("Title 4"); 
setSupportActionBar(toolbar); 
+1

そして、#4行目にNPEがありますか? ;) – reVerse

+0

あなたsetSupportActionBar()を使用することができます;二度。 1つは行#4の前、もう1つは最後です。 –

0

あなたの設定がsetSupportActionBar(Toolbar)になると、これは意図した動作です。サポートライブラリinternalは、ディスプレイタイトルの新しいビューを作成します。

setTitle()Activityの場合は、使用する場合はタイトルのみを更新しますsetActionBar(Toolbar)。しかし、後方互換性はありません。

参考

AppCompatDelegateImplBase

AppCompatDelegateImplV9

+0

私はそれを理解しています。しかし、4行目が動作すれば、6行目も動作するはずです。 – Enigma

+0

@Enigmaは答えを更新しました –

関連する問題