2015-11-27 3 views
1

Я собираюсь добавить тень в свой навигационный ящик. Вот код, который я использовал.Добавление тени для ящика Navigaton дает ошибку

Создал navbar_shadow.xml и добавил его в свой размер. Вот код.

<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> 

Затем добавили следующий код NavigationDrawer.java

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

Так что, когда я бегу этот код. Он начал сбой и следующие ошибки. Вот Логкат, который у меня есть.

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) 

Пожалуйста, помогите мне успешно добавить свою тень. Благодарю.

+0

mDrawerLayout.setDrawerShadow (R.drawable.navbar_shadow, GravityCompat.START); это линия № 63? –

+0

Да. Это номер строки 63. –

+0

показать свой код в выписке класса деятельности – sud

ответ

1

вы должны initializ mDrawerLayout с помощью findViewById

Сначала findViewById, а затем добавьте drawabl е к раскладке

@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); 
+0

Спасибо. Это помогло мне. :) –

1

Убедитесь, что вы инициализирован mDrawerLayout с помощью findViewById

EDIT 1: Изменить порядок

Первого INITI макета с findViewById, а затем добавить вытяжку в макет

+0

Да, да. mDrawerLayout = (DrawerLayout) findViewById (R.id.drawer_layout); –

+0

- ящик, появляющийся без тени? –

+0

Да, когда я удаляю mDrawerLayout.setDrawerShadow (R.drawable.navbar_shadow, GravityCompat.START); он работает отлично –

0

Ваш призыв к setDrawerShadow должен быть после findViewById

т.е.

mTitle = mDrawerTitle = getTitle(); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerLayout.setDrawerShadow(R.drawable.navbar_shadow, GravityCompat.START); 

В настоящее время вы пытаетесь применить тень, прежде чем вы нашли вид, следовательно, null указатель.

Смежные вопросы