2014-01-05 5 views
5

Android 앱에서 YouTube API를 사용하려고합니다. 첫 번째 - 가치가있는 항목이 나타나면 프로젝트에 lib를 추가 했습니까?주 java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo

로그 캣 :

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> 

일반적인 오류이기 때문에 스택에 관한 많은 주제를 읽었지만 해결 방법은 없습니다. 인사말!

편집 : 여기 내 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"/> 

입니다 그리고 그것은 렸기 때문에 오류를 말한다 :

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 25 번째 줄은 youTubePlayerView.initialize(API_KEY, this)

YouTubePlayerView입니다. 당신은 XML로 뷰의 ID를 확인해야합니다

편집 :

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를 복사하고 한 번만 doc을 보도록하십시오. – Raghunandan

관련 문제