2014-01-05 5 views
5

Я пытаюсь использовать API YouTube в своем приложении для Android. Во-первых - если я добавил lib в мой проект, должно появиться что-то в значениях?main java.lang.RuntimeException: Не удается запустить активность ComponentInfo

Второй один здесь, моя ошибка:

Logcat:

E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{pl.krasiniak.krachapp_beta/pl.krasiniak.krachapp_beta.Studio}: java.lang.NullPointerException 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2079) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
      at android.app.ActivityThread.access$600(ActivityThread.java:132) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4575) 
      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:789) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
      at pl.krasiniak.krachapp_beta.Studio.onCreate(Studio.java:25) 
      at android.app.Activity.performCreate(Activity.java:4465) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
            at android.app.ActivityThread.access$600(ActivityThread.java:132) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:4575) 
            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:789) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
            at dalvik.system.NativeStart.main(Native Method) 

Studio.java (я взял его, чтобы проверить с одного сайта)

package pl.krasiniak.krachapp_beta; 


    import com.google.android.youtube.player.YouTubeBaseActivity; 
    import com.google.android.youtube.player.YouTubeInitializationResult; 
    import com.google.android.youtube.player.YouTubePlayer; 
    import com.google.android.youtube.player.YouTubePlayerView; 
    import com.google.android.youtube.player.YouTubePlayer.Provider; 

    import android.os.Bundle; 
    import android.widget.Toast; 

    public class Studio extends YouTubeBaseActivity implements 
    YouTubePlayer.OnInitializedListener{ 

public static final String API_KEY = "blabla"; 
public static final String VIDEO_ID = "o7VVHhK9zf0"; 

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

    YouTubePlayerView youTubePlayerView = (YouTubePlayerView)findViewById(R.id.youtube_view); 
    youTubePlayerView.initialize(API_KEY, this); 
} 

@Override 
public void onInitializationFailure(Provider provider, 
            YouTubeInitializationResult result) { 
    Toast.makeText(getApplicationContext(), 
      "onInitializationFailure()", 
      Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onInitializationSuccess(Provider provider, YouTubePlayer player, 
            boolean wasRestored) { 
    if (!wasRestored) { 
     player.cueVideo(VIDEO_ID); 
    } 
} 

    } 

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="pl.krasiniak.krachapp_beta" 
android:versionCode="2" 
android:versionName="1.1" > 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="19" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <usues-library android:name="com.google.android.youtube.player"/> 
    <activity 
     android:name="pl.krasiniak.krachapp_beta.MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="pl.krasiniak.krachapp_beta.Schedule" 
     android:label="Plan Lekcji" 
     android:parentActivityName="pl.krasiniak.krachapp_beta.MainActivity" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="pl.krasiniak.krachapp_beta.MainActivity" /> 
    </activity> 
    <activity 
     android:name="pl.krasiniak.krachapp_beta.TimeTable" 
     android:label="Tablica" 
     android:parentActivityName="pl.krasiniak.krachapp_beta.MainActivity" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="pl.krasiniak.krachapp_beta.MainActivity" /> 
    </activity> 
    <activity 
     android:name="pl.krasiniak.krachapp_beta.AboutApp" 
     android:label="O Aplikacji" 
     android:parentActivityName="pl.krasiniak.krachapp_beta.MainActivity" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="pl.krasiniak.krachapp_beta.MainActivity" /> 
    </activity> 
    <activity 
     android:name="pl.krasiniak.krachapp_beta.Changes" 
     android:label="@string/title_activity_changes" 
     android:parentActivityName="pl.krasiniak.krachapp_beta.MainActivity" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="pl.krasiniak.krachapp_beta.MainActivity" /> 
    </activity> 
    <activity 
     android:name="pl.krasiniak.krachapp_beta.Studio" 
     android:label="@string/title_activity_studio" 
     android:parentActivityName="pl.krasiniak.krachapp_beta.MainActivity" 
     android:screenOrientation="portrait"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="pl.krasiniak.krachapp_beta.MainActivity" /> 
    </activity> 
</application> 

Я читал много тем о стеке, потому что это обычная ошибка, но ни одно решение не работало для меня. Приветствую!

EDIT: Вот мой activity_studio.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:layout_gravity="center" 
android:gravity="center_horizontal"> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hello YouTube API" 
    android:layout_margin="12dip"/> 
<com.google.android.youtube.player.YouTubePlayerView 
    android:id="@+id/youtube_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="12dip"/> 

И это говорит, что это ошибка becouse:

java.lang.IllegalStateException: A YouTubePlayerView can only be created with an Activity which extends YouTubeBaseActivity as its context. 

Но до сих пор не ясно для меня

ответ

11
Caused by: java.lang.NullPointerException 
      at pl.krasiniak.krachapp_beta.Studio.onCreate(Studio.java:25) 

Я предполагаю, что S tudio.java line 25 is youTubePlayerView.initialize(API_KEY, this)

YouTubePlayerView есть null. Вы должны проверить идентификатор представления в XML

Edit:

setContentView(R.layout.activity_main); 

Но у вас есть

<com.google.android.youtube.player.YouTubePlayerView 
android:id="@+id/youtube_view" 

в activity_studio.xml

SO изменится

setContentView(R.layout.activity_studio); 
+1

Я чувствую так глупо сейчас, я должен быть более осторожно, когда я копирую вещи от других ... Большое спасибо! – wzieba

+0

@tuksiarz рада помочь. скопируйте cpde, но убедитесь, что вы смотрите на него. – Raghunandan

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