Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为导航抽屉添加阴影会导致错误_Java_Android_Xml - Fatal编程技术网

Java 为导航抽屉添加阴影会导致错误

Java 为导航抽屉添加阴影会导致错误,java,android,xml,Java,Android,Xml,我要给我的导航抽屉添加一个阴影。这是我使用的代码 创建了一个navbar\u shadow.xml,并将其添加到drawable。这是代码 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#111" android:endColor="#00000000"> </

我要给我的导航抽屉添加一个阴影。这是我使用的代码

创建了一个
navbar\u shadow.xml
,并将其添加到drawable。这是代码

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#111"
    android:endColor="#00000000">
</gradient>
<size
    android:height="@dimen/activity_vertical_margin"
    android:width="5dp">
</size>
所以,当我运行这段代码时。它开始崩溃,并显示以下错误。这是我的Logcat

11-27 09:43:47.787    6541-6541/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.myayubo, PID: 6541
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myayubo/com.myayubo.Extract}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
            at android.os.Handler.dispatchMessage(Handler.java:110)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:5299)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.myayubo.Extract.onCreate(Extract.java:63)
            at android.app.Activity.performCreate(Activity.java:5264)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
            at android.os.Handler.dispatchMessage(Handler.java:110)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:5299)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
            at dalvik.system.NativeStart.main(Native Method)

请帮助我成功添加阴影。谢谢。

请确保已使用
findViewById

编辑1: 改变顺序


首先使用findViewById初始化布局,然后将可绘制内容添加到布局中

您应该使用findViewById初始化mDrawerLayout

首先查找DViewById,然后将可绘制内容添加到布局中

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_extract);

    mDrawerLayout.setDrawerShadow(R.drawable.navbar_shadow, GravityCompat.START);

    mTitle = mDrawerTitle = getTitle();
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerLayout.setDrawerShadow(R.drawable.navbar_shadow, Gravity.LEFT);/// it should be here after findviewbyid
    mLenear = (ScrollView)findViewById(R.id.leftDrawer);

您对setDrawerShadow的调用必须在findViewById之后


当前,您试图在找到视图之前应用阴影,因此指针为空。

mDrawerLayout.setDrawerShadow(R.drawable.navbar\u shadow,GravityCompat.START);这是63号线?是的。第63行。在活动类extractextract中显示代码意味着my NavigationDrawer.java。当我添加mDrawerLayout.setDrawerShadow(R.drawable.navbar\u shadow,GravityCompat.START)时;它给出了这个错误。但是,如果没有这段代码,导航抽屉就工作了。你需要这个类的全部代码吗?是的,我需要。mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);抽屉是否显示时没有阴影?当我删除mDrawerLayout.setDrawerShadow(R.drawable.navbar\u shadow,GravityCompat.START)时,是的;它正在工作,谢谢。这对我有帮助。:)
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_extract);

    mDrawerLayout.setDrawerShadow(R.drawable.navbar_shadow, GravityCompat.START);

    mTitle = mDrawerTitle = getTitle();
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerLayout.setDrawerShadow(R.drawable.navbar_shadow, Gravity.LEFT);/// it should be here after findviewbyid
    mLenear = (ScrollView)findViewById(R.id.leftDrawer);
    mTitle = mDrawerTitle = getTitle();
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerLayout.setDrawerShadow(R.drawable.navbar_shadow, GravityCompat.START);