- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建具有 DrawerLayout 导航的简单应用程序。其中一个菜单项是我的个人资料。在 My profile Screen 中,有一个按钮可以在同一个 Fragment 中打开Change Password 屏幕。如果我打开 DrawerLayout 的菜单并在没有点击的情况下将其关闭,那么 My Profile Screen 会再次加载。
以下是我的代码
public class HomeActivity extends ActionBarActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private ArrayList<SideMenuEntity> listSideMenuItems;
private SideMenuAdapter adapterSideMenu;
Menu menu;
Fragment fragment;
AsyncTaskHelper loadFragmentTask;
int position, old_position;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
mTitle = mDrawerTitle = getTitle();
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
listSideMenuItems = new ArrayList<>();
for(String str : Constant.SIDE_MENU_ITEMS)
{
listSideMenuItems.add(new SideMenuEntity(str));
}
// setting the nav drawer list adapter
adapterSideMenu = new SideMenuAdapter(getApplicationContext(),listSideMenuItems);
mDrawerList.setAdapter(adapterSideMenu);
mDrawerList.setOnItemClickListener(new ListView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
displayView(position);
}
});
ActionBar actionbar = getSupportActionBar();
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.mipmap.ic_launcher,R.string.app_name, R.string.app_name)
{
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu();
if (fragment != null) {
_setFragmentContainer(fragment, listSideMenuItems.get(position).title);
}
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null)
{
old_position = -1;
displayView(-1);
_setFragmentContainer(fragment, listSideMenuItems.get(position).title);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
this.menu = menu;
getMenuInflater().inflate(R.menu.menu_home_setting, menu);
_setActionBarHomeVisible(false);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId())
{
case R.id.title_bar_home:
displayView(0);
return true;
case R.id.title_bar_setting:
_setFragmentContainer(new SettingFragment(), "Setting");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/***
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
return super.onPrepareOptionsMenu(menu);
}
/**
* Diplaying fragment view for selected nav drawer list item
*
*/
protected void displayView(int p)
{
position = p >= 0 ? p : 0;
fragment = null;
switch (position)
{
case Constant.SIDE_MENU_ITEM_DAHSHBOARD:
fragment = new DashboardFragment();
break;
case Constant.SIDE_MENU_ITEM_MY_PROFILE:
fragment = new MyProfileFragment();
break;
}
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
mDrawerLayout.closeDrawer(mDrawerList);
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getSupportActionBar().setTitle(mTitle);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
/**-------------- private functions ---------------------*/
public void _setFragmentContainer(Fragment fragment, String title)
{
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
setTitle(title);
}
最佳答案
尝试添加 super 构造函数:
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu();
if (fragment != null) {
_setFragmentContainer(fragment, listSideMenuItems.get(position).title);
}
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getSupportActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
关于android DrawerLayout导航 fragment 重新加载而无需点击DrawerLayout项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32692085/
这是我的 mainlayout 文件。 这是我编写与抽屉导航相关的代码的主要布局文件,还使用 include 包含工具栏。
我正在尝试使用新的 Android 架构设置带有应用栏配置的抽屉导航布局。我遇到的问题是 android studio 告诉我设置抽屉布局的方式已被弃用。 这是我的 xml 配置
最近我添加了“使用 google 登录”按钮并且工作正常,但是现在当我尝试运行该应用程序时弹出此错误,我不知道为什么。 这是完整的异常: E/AndroidRuntime: FATAL EXCEPTI
我正在尝试使用 DrawerLayout 显示两个 fragment ,滑出 fragment 具有 ListView 。我主要遵循在 developers site 上找到的示例. 我几乎一切正常,
这是我的 xml 布局文件: 但是当我启动我的 Android 应用程序时,出现错误(在运行时): E/AndroidRuntime: FATAL
我收到 DrawerLayout 无法转换的消息,因此显示错误并且我的应用程序崩溃。 我是一名新的 Android 开发人员,请帮助我。 这是我的主要 Activity : public class
我的申请遇到了奇怪的问题。我的 minSdkVersion 是 16。我的应用程序在 android lollipop 和更高版本的设备上工作正常,但在 android 4.1 和 4.4 上不工作。
我正在尝试创建一个带有透明 Toolbar(带有汉堡图标)和 NavigationView 的 DrawerLayout。 这是我的 main_activty 的布局: 这就是
这个问题已经有答案了: How to fix error: The markup in the document following the root element must be well-for
我对 DrawerLayout 有疑问。我设法做了一个抽屉,这不是问题。但不显示主要内容。 我尝试了所有可能的组合。即使我删除 fragment 主要内容仍然不显示。 有人能发现问
我需要帮助。我一直在尝试操纵它,但似乎无法完成。我正在尝试使图像适合抽屉布局。我调用页眉图像布局 (header.xml) 为: ... 为此
我对 drawerLayout 有疑问。在 drawerLayout 中,我有两个 Linearlayouts。一个是直接显示的主菜单,另一个是用抽屉滑动激活的。当我滑动抽屉菜单时,我无法点击按钮。但
我使用库制作了一个应用程序:jfeinstein10/SlidingMenu .但是这个库有点旧,我想使用 Appcompat 库。 所以我的问题是是否可以使用 drawerLayout 来滑动内容并
我正在制作一个简单的 Android 应用程序,我想制作一个 DrawerLayout 菜单。我去用的时候说必须声明抽屉布局。我检查了我的 SDK 管理器,Android 支持 jar 已安装并且是最
我已经查看了这个问题的所有其他答案,但仍然无法解决这个错误: app:id/drawerLayout) is not a sliding drawer 我在 closeDrawer 行遇到错误:
我有一个带有侧边菜单的 android 应用程序(默认的 android Activity 抽屉导航 Activity ) 我想隐藏滚动条。我为此使用了这段代码: NavigationView
我正在尝试使用全屏 DrawerLayout 实现完全透明的状态栏,就像在新的 IO19 应用程序中一样: 常规的透明状态栏效果总是有一个透明的灰色背景。 最佳答案 设置NavigationView的
我想要的是显示隐藏在左侧的栏,当用户进入布局时,想法是您知道有那个栏,而不必在操作栏上放置一个图标来表示它的存在 最佳答案 如果你想在第一次创建 Activity 时打开抽屉导航,你可以简单地做这样的
我有一个 View 与不在列表中的抽屉导航的底部对齐。 activity_main.xml
当我在打开和关闭抽屉布局上设置锁定和禁用滑动时,我无法通过按下手机上的后退按钮来关闭它,当模式未锁定时按下后退按钮导致关闭但当我将模式更改为例如: drawer_layout.setDrawerLoc
我是一名优秀的程序员,十分优秀!