AndroidX Navigationを使ったフラグメントからの動的なActionBarのタイトル表示
質問
私は、新しい ナビゲーション コンポーネントを使用しています。
ルートアクティビティーの設定は非常にシンプルです。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
val navController = findNavController(R.id.navigationFragment)
setupActionBarWithNavController(navController)
bottomNavigationView.setupWithNavController(navController)
}
フラグメントのタイトルがナビゲーショングラフで定義されている場合は、うまくいきます。しかし、1つのFragmentについて、タイトルを動的に設定したいのです。
試しに
findNavController().currentDestination.label = "Hello world"
で試してみましたが、何も起こりません。
もちろん、次のようなトリックを使うこともできます。
(activity as? AppCompatActivity)?.supportActionBar?.title = "Hello world"
の魔法が解けてしまうような気がします。
setupActionBarWithNavController()
がしてくれるマジックが壊れてしまうような気がします。アクションバーのタイトルを動的に更新する方法はないでしょうか?
どのように解決するのですか?
現在のところ
1.0.0-alpha08
のように、NavigationUIビットに動的にタイトルを設定させることができます... もし動的ビットがナビゲーション・アクションの引数である場合。
ですから、たとえば、ナビゲーショングラフでは、次のようなことができます。
<fragment
android:id="@+id/displayFragment"
android:name="com.commonsware.jetpack.sampler.nav.DisplayFragment"
android:label="Title: {title}" >
<argument
android:name="modelId"
app:argType="string" />
<argument
android:name="title"
app:argType="string" />
</fragment>
ここで
android:label
属性は
<fragment>
には、中括弧で囲まれた引数名 (
{title}
で
"Title: {title}"
. そして、アプリバーのタイトルはラベルの値に設定されます。
{title}
の値で置き換えられます。
title
の引数に置き換えられます。
もし、それよりも手の込んだことが必要な場合、例えば、IDでモデルを検索し、そこからプロパティを読み込みたい場合、この質問に対する他の回答で説明したような、より手動のアプローチを使用する必要があります。
関連
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] HttpPostによる画像送信
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] ViewPagerのアイテムを強制的に再インスタンス化する方法 [重複].
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] BottomNavigationViewを新しいNavControllerで使用する際に、フラグメントを生かす方法はありますか?
-
[解決済み] アンドロイドボタンセレクター
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?
-
[解決済み] アンドロイドボタンセレクター