2016-06-03 1 views
1

Я изменил свои зависимости для импорта com.android.support:appcompat-v7:23.0.1 и com.android.support : design: 23.0.1, но это не исправляет ошибку. YouTube Фрагмент шоу: "Ошибка при инициализации Youtube игрока"Исключение, вызванное вызываемым конструктором в com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer

E/YouTubeAndroidPlayerAPI: Ошибка при создании YouTubePlayerView com.google.android.youtube.player.internal.w $ а: Exception брошенный вызывается конструктор в com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer at com.google.android.youtube.player.internal.wa (Неизвестный источник) at com.google.android.youtube.player.internal .wa (Неизвестный источник) at com.google.android.youtube.player.internal.wa (Неизвестный источник) на com.google.android.youtube.player.internal.ac.a (Неизвестный источник) на com.google.android.youtube.player.YouTubePlayerView.a (Неизвестно 5 Источник) на com.google.android.youtube. player.YouTubePlayerView $ 1.a (Неизвестно Источник) at com.google.android.youtube.player.internal.rg (Неизвестный источник) at com.google.android.youtube.player.internal.r $ ​​ca (Неизвестный источник) на com.google.android.youtube.player.internal.r $ ​​ba (Неизвестный источник) на com.google.android.youtube.player.internal.r $ ​​a.handleMessage (Неизвестно Источник) на android.os.Handler.dispatchMessage (Handler.java) на android.os.Looper.loop (Looper.java) на android.app.ActivityThread.main (ActivityThread.java) на java.lang.reflect. Method.invoke (Native Method) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java) Вызванный: java.lang.reflect.InvocationTargetException по адресу java.lang.reflect.Constructor.newInstance (собственный метод) по адресу com.google.a ndroid.youtube.player.internal.wa (Неизвестный источник) at com.google.android.youtube.player.internal.wa (Неизвестный источник) at com.google.android.youtube.player.internal.wa (Неизвестный источник) на com.google.android.youtube.player.internal.ac.a (Неизвестный источник) на com.google.android.youtube.player.YouTubePlayerView.a (Неизвестно Источник) на com.google.android. youtube.player.YouTubePlayerView $ 1.a (Неизвестно Источник) at com.google.android.youtube.player.internal.rg (Неизвестный источник) at com.google.android.youtube.player.internal.r $ ​​ca (неизвестный Источник) на com.google.android.youtube.player.internal.r $ ​​Ьа (Unknown Source) на com.google.android.youtube.player.internal.r $ ​​a.handleMessage (Неизвестный Источник) на android.os.Handler.dispatchMessage (Handler.java) на android.os.Looper.loop (Looper.java) на android.app.ActivityThread.main (ActivityThread.Java) на java.lang.reflect.Method.invoke (Native Method) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java) в com.android.internal.os.ZygoteInit. main (ZygoteInit.java) Вызвано: java.lang.IllegalArgumentException: конкретный класс , реализующий IObjectWrapper, должен иметь точно один объявлен приватным поле для обернутого объекта. Предпочтительно, это экземпляр класса ObjectWrapper. на vmh.a (SourceFile: 76) на com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer (SourceFile: 147). в java.lang.reflect.Constructor.newInstance (метод Native) на com.google.android.youtube.player.internal.wa (Неизвестный источник) на com.google.android.youtube.player.internal.wa (Неизвестный источник) на com.google.android.youtube.player.internal .wa (Неизвестный источник) at com.google.android.youtube.player.internal.ac.a (Неизвестный источник) at com.google.android.youtube.player.YouTubePlayerView.a (НеизвестноИсточник) на com.google.android.youtube.player.YouTubePlayerView $ 1.а (Неизвестный источник) на com.google.android.youtube.player.internal.rg (Unknown Source) в com.google.android .youtube.player.internal.r $ ​​ca (Неизвестный источник) на com.google.android.youtube.player.internal.r $ ​​ba (Неизвестный источник) на com.google.android.youtube.player.internal. r $ a.handleMessage (Неизвестно Источник) на android.os.Handler.dispatchMessage (Handler.java) на android.os.Looper.loop (Looper.java) на android.app.ActivityThread.main (ActivityThread.java) в java.lang.reflect.Method.invoke (Native Method) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java)

Вот мой билд Gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "vinchecks.wifi.info.karaokeviet2017" 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.android.support:design:23.0.1' 
    compile project(':YouTubeAndroidPlayerApi') 
} 

MainActivity.java

import android.os.Bundle; 
import android.support.design.widget.NavigationView; 
import android.support.design.widget.TabLayout; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.view.ViewPager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 3")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final PagerAdapter adapter = new PagerAdapter 
       (getSupportFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 
     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 



     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 

     } else if (id == R.id.nav_slideshow) { 

     } else if (id == R.id.nav_manage) { 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 
} 

PagerAdapter.java

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 

public class PagerAdapter extends FragmentStatePagerAdapter { 
    int mNumOfTabs; 

    public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
     super(fm); 
     this.mNumOfTabs = NumOfTabs; 
    } 

    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       TabFragment1 tab1 = new TabFragment1(); 
       return tab1; 
      case 1: 
       TabFragment2 tab2 = new TabFragment2(); 
       return tab2; 
      case 2: 
       TabFragment3 tab3 = new TabFragment3(); 
       return tab3; 
      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     return mNumOfTabs; 
    } 
} 

TabFragment1.java

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 

import com.google.android.youtube.player.YouTubeInitializationResult; 
import com.google.android.youtube.player.YouTubePlayer; 
import com.google.android.youtube.player.YouTubePlayerSupportFragment; 

public class TabFragment1 extends Fragment { 
    private String currentVideoID = "nCgQDjiotG0"; 
    public static final String API_KEY = "XXX"; 
    private YouTubePlayer YPlayer; 




    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View fragmentYoutubeView = inflater.inflate(R.layout.tab_fragment_1, container, false); 

     YouTubePlayerSupportFragment mYoutubePlayerFragment = new YouTubePlayerSupportFragment(); 
     FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(R.id.youTubePlayer, mYoutubePlayerFragment); 
     fragmentTransaction.commit(); 

     mYoutubePlayerFragment.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() { 
      @Override 
      public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { 
       if(!wasRestored){ 
        player.cueVideo("2zNSgSzhBfM"); 

       } 
      } 

      @Override 
      public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { 
       Toast.makeText(getContext(),"Error",Toast.LENGTH_LONG).show(); 

      } 
     }); 

     return fragmentYoutubeView; 

    } 

} 

tab_fragment_1.XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <FrameLayout 
     android:id="@+id/youTubePlayer" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" 
     android:visibility="visible" /> 


</RelativeLayout> 

ответ

1

Попробуйте использовать

mYoutubePlayerFragment = YouTubePlayerSupportFragment.newInstance(); 

вместо

mYoutubePlayerFragment = new YouTubePlayerSupportFragment(); 
+0

Да, я изменил его на: YouTubePlayerSupportFragment mYoutubePlayerFragment = новый YouTubePlayerSupportFragment(); –

1

В файле build.gradle вместо
компиляции проекта (': YouTubeAndroidPlayerApi')

[ замените его на] скомпилировать файлы ('libs/Y ouTubeAndroidPlayerApi.jar ')

Убедитесь, что вы скопировали файл jar в папку libs.

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