如果導航標題佈局包含onClick(在xml中),onClick事件崩潰應用程序,則從新發布的Android支持設計庫中使用NavigationView。 OnClick可以通過編程方式通過view.onClickListener
(而不是xml)添加,然後單擊工作正常。但出於某種原因,只要使用xml onClick,就會出現錯誤。NavigationView onClick from xml導致錯誤
這是我的主要佈局:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainActivityLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<RelativeLayout
android:id="@+id/mainContentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
</RelativeLayout>
<android.support.design.widget.NavigationView
android:id="@+id/drawerNavView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer_menu">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
在我的活動,我的菜單項的點擊次數(與navView.setNavigationItemSelectedListener()
加)正常工作。問題是,當頭部被點擊:
drawer_header.xml:
...
<View
android:id="@+id/testButton"
android:layout_width="match_parent"
android:layout_height="60dp"
android:onClick="testButtonClick"/>
...
產生以下錯誤:
java.lang.IllegalStateException: Could not find a method testButtonClick(View)
in the activity class android.view.ContextThemeWrapper for onClick handler
on view class android.view.View with id 'testButton'
UPDATE
NavigationView可以使用標準菜單資源文件,但如果使用菜單XML資源中的onClick,則會出現類似的問題。根據Menu Resource reference,屬性將覆蓋正常回調。這通常工作正常,但與NavigationView中的菜單項,它沒有。相反,它與此錯誤崩潰:
java.lang.RuntimeException: Unable to start activity ComponentInfo{...}:
android.view.InflateException: Binary XML file line #34:
Error inflating class android.support.design.widget.NavigationView
當我刪除XML onClick時,錯誤消失。
UPDATE
我使用了 「官方」 demo project爲Android設計庫測試XML的onClick。相同的結果:將onClick(在xml中)添加到NavigationView的菜單或標題會導致應用程序崩潰。所以這似乎是NavigationView的一個bug。
解決了v23.1
谷歌發佈a fix在支持庫v23.1這些XML的onClick錯誤。
你 – Elltz
是的,我使用的片段和viewpager使用片段。 – hungryghost
舒服,所以在的onclick XML不會在活動的工作,因爲,因爲頭視圖住在一個片段類,是否有意義先生? – Elltz