[解決済み】ナビゲーションドロワー。起動時に選択された項目を設定するには?
2022-04-02 22:27:38
質問
私のコードは完全に動作します。ナビゲーションドロワー内のアイテムがクリックされるたびに、そのアイテムが選択されます。
もちろん、デフォルトのフラグメント(home)でアプリを起動したいのですが、Navigation Drawerではアイテムが選択されていません。プログラムでその項目を選択するにはどうしたらよいでしょうか?
public class BaseApp extends AppCompatActivity {
//Defining Variables
protected String LOGTAG = "LOGDEBUG";
protected Toolbar toolbar;
protected NavigationView navigationView;
protected DrawerLayout drawerLayout;
private DateManager db = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.base_layout);
navigationView = (NavigationView) findViewById(R.id.navigation_view);
// set the home/dashboard at startup
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, new DashboardFragment());
fragmentTransaction.commit();
setNavDrawer();
}
private void setNavDrawer(){
// Initializing Toolbar and setting it as the actionbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Initializing NavigationView
//Setting Navigation View Item Selected Listener to handle the item click of the navigation menu
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger on item Click of navigation menu
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
//Checking if the item is in checked state or not, if not make it in checked state
// I THINK THAT I NEED EDIT HERE...
if (menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
//Closing drawer on item click
drawerLayout.closeDrawers();
//Check to see which item was being clicked and perform appropriate action
switch (menuItem.getItemId()) {
//Replacing the main content with ContentFragment
case R.id.home:
DashboardFragment dashboardFragment = new DashboardFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, dashboardFragment,"DASHBOARD_FRAGMENT");
fragmentTransaction.commit();
return true;
[...]
ここを編集する必要があると思います。
if (menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
または
onCreate
App起動時にFragmentTransactionを使用します。
ご協力ありがとうございました。
解決方法は?
以下のコードを使用してください。
navigationView.getMenu().getItem(0).setChecked(true);
を呼び出した後に、このメソッドを呼び出します。
setNavDrawer();
は
getItem(int index)
メソッドは
MenuItem
を呼び出すと
setChecked(true);
その上で
MenuItem
であれば、あとはデフォルトで持っている要素のインデックスを調べて、0をそのインデックスに置き換えるだけです。
を呼び出すことで、その項目を選択(ハイライト)することができます。
onNavigationItemSelected(navigationView.getMenu().getItem(0));
以下は参考リンクです。 http://thegeekyland.blogspot.com/2015/11/navigation-drawer-how-set-selected-item.html
EDIT サポートライブラリリビジョン24.0.0、Nexus 4では動作しませんでした。
navigationView.setCheckedItem(R.id.nav_item);
以下は@kingstonさんの回答です。
関連
-
[解決済み] ユーザーが拒否する可能性のあるパーミッションが必要なコール
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み】SDKの場所がandroid studioで見つからない。
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Android M パーミッション : shouldShowRequestPermissionRationale()関数の使用方法について混乱しています。
-
[解決済み] プログラムによりスピナーの選択項目を設定する
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] ナビゲーションドロワー(Google+とYouTubeの比較)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】AndroidのSSL接続でトラストアンカーが見つからない
-
[解決済み】コンテンツには、id属性が「android.R.id.list」であるListViewが必要です。
-
[解決済み】java.lang.RuntimeException: アクティビティを開始できない ComponentInfo
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み】SDKの場所がandroid studioで見つからない。
-
[解決済み】Couldn't load memtrack module Logcat Error
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] Xlint:deprecationを使用して再コンパイルする方法
-
[解決済み] Android SDK の場所には空白を含めないでください。NDK ツールで問題が発生するためです。