-1

У меня эта ошибка в Android versions 4.+ (особенно в 4.1 и 4.3), в то время как в других версиях Android нет. Действия и библиотеки (я использую GooglePlayServices и YouTubePlayerAPI) указаны в файле Manifest.xml и в файле gradle.java.lang.RuntimeException: Невозможно запустить активность ComponentInfo в версиях android 4. +

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.test/com.app.test.DetailActivity}: java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
at android.app.ActivityThread.access$600(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5039) 
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) 
Caused by: java.lang.NullPointerException 
at com.app.test.content.FirstFragment.onCreate(FirstFragment.java:151) 
at android.support.v4.app.Fragment.performCreate(Fragment.java:1763) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:913) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108) 
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1912) 
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:266) 
at com.app.test.DetailActivity.onCreate(DetailActivity.java:73) 
at android.app.Activity.performCreate(Activity.java:5104) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
... 11 more 

Код из фрагмента, где ошибка вызвана (строка 151) является метод OnCreate() фрагмента присоединен:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setHasOptionsMenu(true); 

     if(getArguments() != null && getArguments().containsKey(ARG_ITEM_ID)) { 
      // Loads the content specified by the fragment arguments. 
      mItem = Items.getInstance().getMap().get(getArguments().getString(ARG_ITEM_ID)); 
     } 

     // Initialize mCustomMediaPlayer 
     mCustomMediaPlayer = new CustomMediaPlayer(getActivity().getApplicationContext(), mItem.getTrackId()); 
    } 

Где заостренные линии 151:

mCustomMediaPlayer = new CustomMediaPlayer(VillancicosActivity.getContext(), mItem.getTrackId()); 

CustomMediaPlayer Класс:

public class CustomMediaPlayer { 

    /////// Constants 

    private static final String TAG = "CustomMediaPlayer"; 

    /////// Fields 

    /** 
    * The application context. 
    * Is used to manage MediaPlayer and async class. 
    */ 
    private Context mContext; 

    /** 
    * MediaPlayer instance. 
    */ 
    private MediaPlayer mMediaPlayer; 

    /** 
    * The id representing track used in MediaPlayer create() method 
    * where will be played. 
    */ 
    private Integer mTrackId; 

    /** 
    * A flag indicating if the track is playing or not. 
    */ 
    private Boolean mIsPlaying = false; 

    /** 
    * Initialize providing the application context and the calling fragment track id. 
    * 
    * @param context The Context to use. 
    * @param trackId The raw resource id to use as datasource. 
    */ 
    public CustomMediaPlayer(Context context, Integer trackId) { 
     mContext = context; 
     mTrackId = trackId; 
    } 

..... 
} 

Это часть класса, где главный конструктор вызывается из FirstFragment в строке 151.

Любая идея? Спасибо всем!

+1

Вероятно, 'mItem' - null. 'VillancicosActivity.getContext()' отлично пахнет. – laalto

+0

Я попытался getActivity(). GetApplicationContext() и получает ту же самую ошибку. – GmloMalo

+0

Я предполагаю, что если бы это было в контексте, это не сработало бы в любой версии Android, и не только в 4. + – GmloMalo

ответ

1

попробовать этот

mCustomMediaPlayer = new CustomMediaPlayer(getActivity(), mItem.getTrackId()); 

и проверить mItem ==null или нет.

+0

Я пробовал, и mItem имеет значение null в некоторых устройствах с Android 2.3.3 и 2.3.7, но i не знаю, что вызывает его. – GmloMalo

0

ваша деятельность не распознает Villancicos Activity.getContext(), вам необходимо передать действительный контекст. попробуйте getApplicationContext().

+0

Я пробовал getActivity(). getApplicationContext() тоже и имеет ту же ошибку. – GmloMalo

+0

вы проверили, если mItem! = Null? –

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