YouTubePlayerFragment cannot be cast to android.support.v4.app.Fragment -
im stuck on 3 days , have tried have come across after lots of searching ,this post last resort, im trying open youtubeplayerfragment using navigation drawer
youtubeplayerfragment cannot cast android.support.v4.app.fragment problem
edit question : have updated code have used youtubeplayersupportfragment instead of youtubeplayerfragment ,i error in displayview method (case 4: fragment = new youtube(); break;) in main activity saying cannot convert youtube fragment , cannot logcat since cant run it
edit question 2: code updated again have runtime problem ,heres logcat
07-22 22:15:09.782: e/androidruntime(20603): fatal exception: main 07-22 22:15:09.782: e/androidruntime(20603): process: net.frankandwalters, pid: 20603 07-22 22:15:09.782: e/androidruntime(20603): java.lang.nullpointerexception: attempt invoke virtual method 'void com.google.android.youtube.player.youtubeplayerview.a()' on null object reference 07-22 22:15:09.782: e/androidruntime(20603): @ com.google.android.youtube.player.youtubeplayersupportfragment.onstart(unknown source) 07-22 22:15:09.782: e/androidruntime(20603): @ android.support.v4.app.fragment.performstart(fragment.java:1502) 07-22 22:15:09.782: e/androidruntime(20603): @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:957) 07-22 22:15:09.782: e/androidruntime(20603): @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1104) 07-22 22:15:09.782: e/androidruntime(20603): @ android.support.v4.app.backstackrecord.run(backstackrecord.java:682) 07-22 22:15:09.782: e/androidruntime(20603): @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1460) 07-22 22:15:09.782: e/androidruntime(20603): @ android.support.v4.app.fragmentmanagerimpl$1.run(fragmentmanager.java:440) 07-22 22:15:09.782: e/androidruntime(20603): @ android.os.handler.handlecallback(handler.java:739) 07-22 22:15:09.782: e/androidruntime(20603): @ android.os.handler.dispatchmessage(handler.java:95) 07-22 22:15:09.782: e/androidruntime(20603): @ android.os.looper.loop(looper.java:135) 07-22 22:15:09.782: e/androidruntime(20603): @ android.app.activitythread.main(activitythread.java:5351) 07-22 22:15:09.782: e/androidruntime(20603): @ java.lang.reflect.method.invoke(native method) 07-22 22:15:09.782: e/androidruntime(20603): @ java.lang.reflect.method.invoke(method.java:372) 07-22 22:15:09.782: e/androidruntime(20603): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:908) 07-22 22:15:09.782: e/androidruntime(20603): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:703)
heres java code, hope 1 can , thank you
import android.app.activity; import android.os.bundle; 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 youtube extends youtubeplayersupportfragment implements youtubeplayer.oninitializedlistener { public static youtube newinstance() { youtube fragment = new youtube(); return fragment; } private void init(){ initialize("aizasybybxmsbpvhmkgm4rkqpneb4tf4yobvaky", this); } public youtube() { } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.youtubefragment, container, false); youtube ytf = newinstance(); ytf.init(); getactivity().getsupportfragmentmanager().begintransaction() .add(r.id.youtube_player, ytf) .commit(); return view; } @override public void onattach(activity activity) { super.onattach(activity); } @override public void ondetach() { super.ondetach(); } @override public void oninitializationsuccess(youtubeplayer.provider provider, youtubeplayer player, boolean wasrestored) { if (!wasrestored) { player.cuevideo("ncgqdjiotg0"); } } @override public void oninitializationfailure(youtubeplayer.provider provider, youtubeinitializationresult youtubeinitializationresult) { toast.maketext(getactivity(), "failured initialize!", toast.length_long).show(); } }
this xml code
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/background" android:id="@+id/fragment_youtube_player_holder" > <fragment android:name="com.google.android.youtube.player.youtubeplayersupportfragment" android:id="@+id/youtube_player" android:layout_width="match_parent" android:layout_height="match_parent"/> </linearlayout>
here main activity contains navigation drawer
import java.util.arraylist; import net.frankandwalters.adapter.navdrawerlistadapter; import net.frankandwalters.model.navdraweritem; import android.support.v4.app.fragment; import android.content.res.configuration; import android.content.res.typedarray; import android.os.bundle; import android.support.v4.app.actionbardrawertoggle; import android.support.v4.app.fragmentactivity; import android.support.v4.widget.drawerlayout; import android.util.log; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.adapterview; import android.widget.listview; public class mainactivity extends fragmentactivity { private drawerlayout mdrawerlayout; private listview mdrawerlist; private actionbardrawertoggle mdrawertoggle; // nav drawer title //private charsequence mdrawertitle; // used store app title //private charsequence mtitle; // slide menu items private string[] navmenutitles; private typedarray navmenuicons; private arraylist<navdraweritem> navdraweritems; private navdrawerlistadapter adapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //mtitle = mdrawertitle = gettitle(); // load slide menu items navmenutitles = getresources().getstringarray(r.array.nav_drawer_items); // nav drawer icons resources navmenuicons = getresources() .obtaintypedarray(r.array.nav_drawer_icons); mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout); mdrawerlist = (listview) findviewbyid(r.id.list_slidermenu); navdraweritems = new arraylist<navdraweritem>(); // adding nav drawer items array // home navdraweritems.add(new navdraweritem(navmenutitles[0], navmenuicons.getresourceid(0, -1))); // find people navdraweritems.add(new navdraweritem(navmenutitles[1], navmenuicons.getresourceid(1, -1))); // photos navdraweritems.add(new navdraweritem(navmenutitles[2], navmenuicons.getresourceid(2, -1))); // communities, add counter here navdraweritems.add(new navdraweritem(navmenutitles[3], navmenuicons.getresourceid(3, -1))); // pages navdraweritems.add(new navdraweritem(navmenutitles[4], navmenuicons.getresourceid(4, -1))); // what's hot, add counter here navdraweritems.add(new navdraweritem(navmenutitles[5], navmenuicons.getresourceid(5, -1))); navdraweritems.add(new navdraweritem(navmenutitles[6], navmenuicons.getresourceid(6, -1))); navdraweritems.add(new navdraweritem(navmenutitles[7], navmenuicons.getresourceid(7, -1))); navdraweritems.add(new navdraweritem(navmenutitles[8], navmenuicons.getresourceid(8, -1))); navdraweritems.add(new navdraweritem(navmenutitles[9], navmenuicons.getresourceid(9, -1))); navdraweritems.add(new navdraweritem(navmenutitles[10] + " disc 3", navmenuicons.getresourceid(10, -1))); // recycle typed array navmenuicons.recycle(); mdrawerlist.setonitemclicklistener(new slidemenuclicklistener()); // setting nav drawer list adapter adapter = new navdrawerlistadapter(getapplicationcontext(), navdraweritems); mdrawerlist.setadapter(adapter); // enabling action bar app icon , behaving toggle button getactionbar().setdisplayhomeasupenabled(true); getactionbar().sethomebuttonenabled(true); mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout, r.drawable.ic_drawer, //nav menu toggle icon r.string.app_name, // nav drawer open - description accessibility r.string.app_name // nav drawer close - description accessibility ) { public void ondrawerclosed(view view) { //getactionbar().settitle(mtitle); // calling onprepareoptionsmenu() show action bar icons invalidateoptionsmenu(); } public void ondraweropened(view drawerview) { //getactionbar().settitle(mdrawertitle); // calling onprepareoptionsmenu() hide action bar icons invalidateoptionsmenu(); } }; mdrawerlayout.setdrawerlistener(mdrawertoggle); if (savedinstancestate == null) { // on first time display view first nav item displayview(0); } } /** * slide menu item click listener * */ private class slidemenuclicklistener implements listview.onitemclicklistener { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { // display view selected nav drawer item displayview(position); } } @override public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // toggle nav drawer on selecting action bar app icon/title if (mdrawertoggle.onoptionsitemselected(item)) { return true; } // handle action bar actions click switch (item.getitemid()) { case r.id.action_settings: return true; default: return super.onoptionsitemselected(item); } } /* * * called when invalidateoptionsmenu() triggered */ @override public boolean onprepareoptionsmenu(menu menu) { // if nav drawer opened, hide action items boolean draweropen = mdrawerlayout.isdraweropen(mdrawerlist); menu.finditem(r.id.action_settings).setvisible(draweropen && !draweropen); return super.onprepareoptionsmenu(menu); } /** * diplaying fragment view selected nav drawer list item * */ private void displayview(int position) { // update main content replacing fragments fragment fragment = null; switch (position) { // case 0: // fragment = new home(); // break; // case 1: // fragment = new forum(); // break; // case 2: // fragment = new facebook(); // break; // case 3: // fragment = new twitter(); // break; case 4: //fragment = youtube.newinstance(); // if(youtubeintents.isyoutubeinstalled(getbasecontext()) ) { // if(youtubeapiserviceutil.isyoutubeapiserviceavailable(getbasecontext()) != youtubeinitializationresult.success) { // // fragment = new youtube(); // intent intent = youtubeintents.createuserintent(this, "frankandwalters"); // startactivity(intent); // // } else { fragment = new youtube(); //intent intent = youtubeintents.createuserintent(this, "frankandwalters"); // startactivity(intent); // } // } break; // case 5: // fragment = new instagram(); // break; // case 6: // fragment = new google(); // break; // case 7: // fragment = new gigography(); // break; // case 8: // fragment = new discography(); // break; // case 9: // fragment = new lyrics(); // break; // case 10: // fragment = new souvenirs(); // break; default: break; } if (fragment != null) { getsupportfragmentmanager().begintransaction() .replace(r.id.frame_container, fragment).commit(); // update selected item , title, close drawer mdrawerlist.setitemchecked(position, true); mdrawerlist.setselection(position); //settitle(navmenutitles[position]); mdrawerlayout.closedrawer(mdrawerlist); } else { // error in creating fragment log.e("mainactivity", "error in creating fragment"); } } // @override // public void settitle(charsequence title) { // mtitle = title; // getactionbar().settitle("the frank , walters"); // } /** * when using actionbardrawertoggle, must call during * onpostcreate() , onconfigurationchanged()... */ @override protected void onpostcreate(bundle savedinstancestate) { super.onpostcreate(savedinstancestate); // sync toggle state after onrestoreinstancestate has occurred. mdrawertoggle.syncstate(); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); // pass configuration change drawer toggls mdrawertoggle.onconfigurationchanged(newconfig); } }
replace youtubeplayerfragment
youtubeplayersupportfragment version uses support version of fragment
.
Comments
Post a Comment