2015-06-25 1 views
-4

Я пытаюсь сделать анимацию, но я вижу только NullPointerExceptionNullPointerException по анимации

LogCat:

06-25 12:13:40.474 12959-12959/com.example.admin.p0201_simpleanimation E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.NullPointerException 
     at com.example.admin.p0201_simpleanimation.MainActivity.onContextItemSelected(MainActivity.java:92) 
     at android.app.Activity.onMenuItemSelected(Activity.java:2566) 
     at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:353) 
     at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:144) 
     at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:99) 
     at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:3633) 
     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 
     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 
     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 
     at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167) 
     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:941) 
     at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
     at android.widget.AbsListView.performItemClick(AbsListView.java:1100) 
     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2749) 
     at android.widget.AbsListView$1.run(AbsListView.java:3423) 
     at android.os.Handler.handleCallback(Handler.java:725) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5041) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
     at dalvik.system.NativeStart.main(Native Method) 

Я просто хочу, чтобы анимировать простой TextView с помощью контекстного меню. Причина исключения скрывает здесь

textView.startAnimation (anim);

мой onContextMenuItemSelected метод:

@Override 
public boolean onContextItemSelected(MenuItem item) { 

    Animation anim = null; 
    switch (item.getItemId()) { 
     case MENU_ALPHA_ID: 
      anim = AnimationUtils.loadAnimation(this, R.anim.myalpha); 
      break; 
     case MENU_COMBO_ID: 
      anim = AnimationUtils.loadAnimation(this, R.anim.mycombo); 
      break; 
     case MENU_ROTATE_ID: 
      anim = AnimationUtils.loadAnimation(this, R.anim.myrotate); 
      break; 
     case MENU_SCALE_ID: 
      anim = AnimationUtils.loadAnimation(this, R.anim.myscale); 
      break; 
     case MENU_TRANSLATE_ID: 
      anim = AnimationUtils.loadAnimation(this, R.anim.mytrans); 
      break; 
    } 
     textView.startAnimation(anim); 

    return super.onContextItemSelected(item); 
} 

Один из моих XML-файлов анимации:

<?xml version="1.0" encoding="utf-8"?> 
<alpha 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" 
    android:duration="3000"> 
</alpha>` 

этот файл находится в

Рез/аним/myalpha.xml

Помогите мне пожалуйста. Что не так?

+0

см. В вашем коде, который вы устанавливаете Animation anim = null; –

+0

Есть ли другие варианты меню не в переключателе? Это плюс анимация, установленная в null, сделает это. Попробуйте добавить случай по умолчанию в коммутатор. – cb4

+1

Любые нисходящие избиратели должны оставить комментарий в качестве объяснения. Это новый пользователь, поэтому вырезать им немного слабину !!! – cb4

ответ

1

Причина исключения скрывается здесь

textView.startAnimation(anim); 

Единственный способ для NPE здесь является то, что textView является null. Убедитесь, что вы его инициализировали.

+1

Спасибо, очень! я действительно ошибся! –

0

Добавить по умолчанию для сазе переключателя, что-то вроде этого,

 case MENU_TRANSLATE_ID: 
     default:: 
      anim = AnimationUtils.loadAnimation(this, R.anim.mytrans); 
      break; 

Если идентификатор не соответствует кому-либо это может привести к NullPointerException

0

Попробуйте изменить линию

Animation anim = null; 

до

+0

это плохая идея! Не работает –

1

Вы инициализировали текст? используя findViewById()?

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – mpromonet

+0

уверен, это будет помнить! – user3820753

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