Nexus 5的材料设计与Android L移动 [英] Material Design on Nexus 5 with Android L

查看:173
本文介绍了Nexus 5的材料设计与Android L移动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Android L我的应用程序崩溃,但它的工作原理Android KitKat上。也有是在布局上没有RippleDrawable。下面是异常和布局;

XML布局:

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:方向=垂直
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:背景=@色/ page_background>    <的EditText
        机器人:layout_width =match_parent
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_marginLeft =30dp
        机器人:layout_marginRight =30dp
        安卓的inputType =textEmailAddress
        机器人:EMS =10
        机器人:ID =@ + ID / usernameET
        机器人:layout_alignParentTop =真
        机器人:layout_centerHorizo​​ntal =真
        机器人:layout_marginTop =100dp
        机器人:提示=@字符串/ username_hint/>    <的EditText
        机器人:layout_width =match_parent
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_marginLeft =30dp
        机器人:layout_marginRight =30dp
        安卓的inputType =textPassword
        机器人:EMS =10
        机器人:ID =@ + ID / passwordET
        机器人:layout_below =@ + ID / usernameET
        机器人:layout_centerHorizo​​ntal =真
        机器人:layout_marginTop =20dp
        机器人:提示=@字符串/ password_hint/>    <按钮
        机器人:layout_width =match_parent
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_marginLeft =60dp
        机器人:layout_marginRight =60dp
        机器人:文字=@字符串/ login_text
        机器人:ID =@ + ID / loginBtn
        机器人:背景=@绘制/ positive_button_selector
        机器人:文字颜色=#FFF
        机器人:layout_below =@ + ID / passwordET
        机器人:layout_centerHorizo​​ntal =真
        机器人:layout_marginTop =40dp/>    <的TextView
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文字=@字符串/ register_text
        机器人:ID =@ + ID / registerText
        机器人:layout_below =@ + ID / loginBtn
        机器人:layout_marginLeft =50dp
        机器人:layout_marginTop =40dp
        机器人:文字颜色=@彩色/ accent_color
        机器人:TEXTSIZE =16SP/>    <的TextView
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文字=@字符串/ forget_password
        机器人:ID =@ + ID / forgetText
        机器人:layout_below =@ + ID / registerText
        机器人:layout_marginLeft =50dp
        机器人:layout_marginTop =20dp
        机器人:文字颜色=@彩色/ accent_color
        机器人:TEXTSIZE =16SP/>
< / RelativeLayout的>

绘制对象XML'positive_button_selector

 <选择的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>    <项目的android:STATE_ pressed =false的>
        <形状的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android机器人:形状=矩形>
            [固体机器人:色=@色/ accent_color/>
            <角落的an​​droid:半径=4DP/>
        < /形状>
    < /项目>
    <项目的android:STATE_ pressed =真正的>
        <形状的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android机器人:形状=矩形>
            [固体机器人:色=@色/ teal_light/>
            <角落的an​​droid:半径=4DP/>
        < /形状>
    < /项目>
< /选择>

例外:

 >显示java.lang.NullPointerException:试图调用虚拟方法INT android.content.res.ColorStateList.getColorForState(INT [],INT)对空对象引用
            在android.graphics.drawable.RippleDrawable.activateHotspot(RippleDrawable.java:413)
            在android.graphics.drawable.RippleDrawable.setActive(RippleDrawable.java:229)
            在android.graphics.drawable.RippleDrawable.onStateChange(RippleDrawable.java:207)
            在android.graphics.drawable.Drawable.setState(Drawable.java:566)
            在android.view.View.drawableStateChanged(View.java:15576)
            在android.widget.TextView.drawableStateChanged(TextView.java:3477)
            在android.view.View.refreshDrawableState(View.java:15594)
            在android.view.View.handleFocusGainInternal(View.java:4779)
            在android.view.View.requestFocusNoSearch(View.java:7335)
            在android.view.View.requestFocus(View.java:7314)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            在android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            在android.view.ViewGroup.requestFocus(ViewGroup.java:2451)
            在android.view.View.requestFocus(View.java:7281)
            在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1898)
            在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1044)
            在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5749)
            在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:767)
            在android.view.Choreographer.doCallbacks(Choreographer.java:580)
            在android.view.Choreographer.doFrame(Choreographer.java:550)
            在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:753)
            在android.os.Handler.handleCallback(Handler.java:738)
            在android.os.Handler.dispatchMessage(Handler.java:95)
            在android.os.Looper.loop(Looper.java:135)
            在android.app.ActivityThread.main(ActivityThread.java:5070)
            在java.lang.reflect.Method.invoke(本机方法)
            在java.lang.reflect.Method.invoke(Method.java:372)
            在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:836)
            在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)


解决方案

此问题是由棒棒堂的老preVIEW版本引起的。如果更新设备,以最新的preVIEW版本,你不会看到这个崩溃了。

的意见提的是发生在版本LPV81C这是在2014年7月发布的最新preVIEW版本,2014年10月27日的大跌是LPX13D它没有这个问题。

My app crashes on Android L but it works on android kitkat. Also There is no RippleDrawable on the layout. Here is Exception and layout ;

Xml Layout :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/page_background">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:inputType="textEmailAddress"
        android:ems="10"
        android:id="@+id/usernameET"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:hint="@string/username_hint" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/passwordET"
        android:layout_below="@+id/usernameET"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:hint="@string/password_hint" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="60dp"
        android:layout_marginRight="60dp"
        android:text="@string/login_text"
        android:id="@+id/loginBtn"
        android:background="@drawable/positive_button_selector"
        android:textColor="#fff"
        android:layout_below="@+id/passwordET"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/register_text"
        android:id="@+id/registerText"
        android:layout_below="@+id/loginBtn"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="40dp"
        android:textColor="@color/accent_color"
        android:textSize="16sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/forget_password"
        android:id="@+id/forgetText"
        android:layout_below="@+id/registerText"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="20dp"
        android:textColor="@color/accent_color"
        android:textSize="16sp" />
</RelativeLayout>

Drawable xml 'positive_button_selector' :

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false">
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
            <solid android:color="@color/accent_color" />
            <corners android:radius="4dp" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
            <solid android:color="@color/teal_light" />
            <corners android:radius="4dp" />
        </shape>
    </item>
</selector>

Exception :

> java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.res.ColorStateList.getColorForState(int[], int)' on a null object reference
            at android.graphics.drawable.RippleDrawable.activateHotspot(RippleDrawable.java:413)
            at android.graphics.drawable.RippleDrawable.setActive(RippleDrawable.java:229)
            at android.graphics.drawable.RippleDrawable.onStateChange(RippleDrawable.java:207)
            at android.graphics.drawable.Drawable.setState(Drawable.java:566)
            at android.view.View.drawableStateChanged(View.java:15576)
            at android.widget.TextView.drawableStateChanged(TextView.java:3477)
            at android.view.View.refreshDrawableState(View.java:15594)
            at android.view.View.handleFocusGainInternal(View.java:4779)
            at android.view.View.requestFocusNoSearch(View.java:7335)
            at android.view.View.requestFocus(View.java:7314)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2448)
            at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2492)
            at android.view.ViewGroup.requestFocus(ViewGroup.java:2451)
            at android.view.View.requestFocus(View.java:7281)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1898)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1044)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5749)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
            at android.view.Choreographer.doCallbacks(Choreographer.java:580)
            at android.view.Choreographer.doFrame(Choreographer.java:550)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
            at android.os.Handler.handleCallback(Handler.java:738)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5070)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)

解决方案

This issue is caused by an old preview version of Lollipop. If you update your device to the latest preview version you will not see this crash anymore.

The comments mention that the crash occurred in version LPV81C which was released in July 2014. The latest preview version as of Oct 27 2014 is LPX13D which does not have this issue.

这篇关于Nexus 5的材料设计与Android L移动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆