我正在开发的应用程序包含一个在Activity中实现的导航抽屉.活动布局如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<include
android:id="@+id/appbar"
layout="@layout/appbar" />
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/header_drawer"
app:menu="@menu/menu_nav">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
这是一种非常常见的模式,只有经常更改的是容器布局中的Fragment.
如果任何片段具有滚动元素,则在滚动时,CoordinatorLayout将很乐意进行位置转换,包括工具栏/ AppBarLayout.
这里真正的问题是,当Fragment被替换时,工具栏的位置保持不变,即,如果隐藏工具栏,它将保持不变.
结果如下:
这个:

卡住:

如何在这种情况下重置工具栏位置?
编辑: 可能是一个错误,只有在重新启动应用程序时才会调用AppBarLayout偏移更改侦听器(按下后退按钮并打开应用程序),并在激烈的投掷后停止再次调用.
android navigation-drawer android-design-library androiddesignsupport
app:srcCompat与ImageView允许向后兼容使用载体可绘的.但是,你怎么能与其他使用它们View小号之外ImageView?例如,TextView属性就像android:drawableLeft.
同时使用矢量drawable作为android:iconwith MenuItem导致崩溃,但有以下异常:
Fatal Exception: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:626)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
at android.view.LayoutInflater.inflate(LayoutInflater.java:470)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.support.v7.view.menu.MenuItemImpl.setActionView(MenuItemImpl.java:621)
at android.support.v7.view.menu.MenuItemImpl.setActionView(MenuItemImpl.java:40)
at android.support.v4.view.MenuItemCompat.setActionView(MenuItemCompat.java:310)
at android.support.v7.view.SupportMenuInflater$MenuState.setItem(SupportMenuInflater.java:465)
at android.support.v7.view.SupportMenuInflater$MenuState.addItem(SupportMenuInflater.java:479)
at android.support.v7.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:196)
at android.support.v7.view.SupportMenuInflater.inflate(SupportMenuInflater.java:118)
at com.example.niceapp.context.main.MainActivity.onCreateOptionsMenu(MainActivity.java:101)
at android.app.Activity.onCreatePanelMenu(Activity.java:2578)
Run Code Online (Sandbox Code Playgroud)
使用支持库23.2.0,如何解决此问题?
Caused by: java.lang.IllegalStateException: analyticsModule must be set
我正在构建一个使用模板样式初始化的库.用户可以使用该库有选择地为项目设置模块.它使用Dagger 2进行DI.
但是Dagger 2似乎不允许使用可选模块.不能简单地忽略未设置的模块?
Android数据绑定支持最酷的功能之一是它还为View设置了ID字段.这样可以整理代码库,因为不需要字段或findViewById()调用.
但问题是绑定实例只能通过bind()调用来检索,该调用往往会调度绑定.当异步接收数据并且通常NullPointerException抛出数据时,这是不好的.
可以检索带有View字段的绑定实例减去实际的数据绑定过程吗?
堆栈跟踪:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at com.app.android.databinding.ActivityRestaurantDetailsBinding.executeBindings(ActivityRestaurantDetailsBinding.java:381)
at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:350)
at android.databinding.ViewDataBinding$6.run(ViewDataBinding.java:167)
at android.databinding.ViewDataBinding$5.onViewAttachedToWindow(ViewDataBinding.java:137)
at android.view.View.dispatchAttachedToWindow(View.java:14525)
Run Code Online (Sandbox Code Playgroud)