我用NavigationView
创建了MainActivity
。当打开Activity
时,我想自动选择导航抽屉中的第一个项目,并在该项目下打开Fragment
。我已经搜索了很多,但没有找到任何合适的解决方案。
做这件事的正确方法是什么?Main Activity
:
public class MainActivity extends AppCompatActivity implements Config {
private NavigationView navigationView;
private DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(getResources().getColor(R.color.colorIcons));
if (null != getSupportActionBar())
getSupportActionBar().setLogo(R.drawable.ic_blogger_white);
//Start PostListFragmentWebView
/*PostListFragmentWebView postListFragmentWebView = new PostListFragmentWebView();
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame, postListFragmentWebView)
.commit();*/
//Initializing NavigationView
navigationView = (NavigationView) findViewById(R.id.navigationView);
//Setting Navigation View Item Selected Listener to handle the item click of the navigation menu
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
//Checking if the item is in checked state or not, if not set it to checked state.
if (menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
//Closing drawer on item click
drawerLayout.closeDrawers();
//Check to see which item was clicked and perform the appropriate action.
switch (menuItem.getItemId()) {
case R.id.posts:
PostListFragmentWebView postListFragment = new PostListFragmentWebView();
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame, postListFragment)
.commit();
return true;
case R.id.pages:
PageListFragmentWebView pagetListFragment = new PageListFragmentWebView();
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame, pagetListFragment)
.commit();
return true;
case R.id.blog:
BlogInfoFragmentWebView blogInfoFragment = new BlogInfoFragmentWebView();
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame, blogInfoFragment)
.commit();
return true;
default:
Toast.makeText(getApplicationContext(), getResources().getString(R.string.drawer_error), Toast.LENGTH_SHORT).show();
return true;
}
}
});
// Initializing Drawer Layout and ActionBarToggle
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open_drawer, R.string.close_drawer) {
@Override
public void onDrawerClosed(View drawerView) {
// Code here will be triggered once the drawer closes as we don't want anything to happen so we leave this blank.
super.onDrawerClosed(drawerView);
}
@Override
public void onDrawerOpened(View drawerView) {
// Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank.
super.onDrawerOpened(drawerView);
}
};
//Setting the actionbarToggle to drawer layout
drawerLayout.setDrawerListener(actionBarDrawerToggle);
drawerLayout.getChildAt(0).setSelected(true);
//calling sync state is necessary or else your hamburger icon wont show up
actionBarDrawerToggle.syncState();
}
}
9条答案
按热度按时间cgyqldqp1#
在
onCreate()
中,以下代码将在第一次启动时加载第一个项目的片段:感谢calvinfly的这篇评论。
pexxcrt22#
将
android:checked="true"
添加到第一个菜单项。并手动选择一项,使用
打开碎片。
lbsnaicq3#
而不是普通的听众。。
将监听器创建为Obj:
...并使用Obj触发监听器事件:
...其中getItem(0)是第一个菜单项。
在其菜单项XML定义中使用方法getItem(0).setChecked(true)或android:checked=“true”。
rxztt3cl4#
你也可以在设置好navigationview之后使用
navigationView.setCheckedItem(R.id.default)
(javadoc)。uxh89sit5#
只需在
onCreate
方法中添加以下代码:为我工作!
d7v8vwbk6#
考虑到方向和其他配置的变化,这可以做得更好。我们可以根据我们是否来自以前的状态来选择任何导航抽屉菜单项。检查:对于导航抽屉挥舞活动:-
帮助取消选中或选中菜单项的切换方法
这是我保存所选菜单项状态的方式。选中:-
可以替换为代码:
icomxhvb7#
在
menu.xml
中,请记住为单个项目指定android:checkable="true"
,为一组项目指定android:checkableBehavior="single"
。然后在
NavigationItemSelectedListener
中使用setCheckedItem(R.id.item_id_in_menu)
将其选中。而且你不必再做管理所选项目的肮脏任务了。navigationView自己管理它。
dzjeubhm8#
1.)要初始化到HomeFragment,请在MainActivity中的onCreate()中使用以下命令:
2.)要在navigationDrawer中将项目设置为选中状态,请在navigation_menu.xml中将项目设置为选中状态
xqnpmsa89#
我觉得最好把
选择第一个NavigationView。