2015-07-22 4 views
6

im अब 3 दिनों के लिए इस पर अटक ढाला नहीं जा सकता है और सब कुछ मैं खोज के बहुत सारे के बाद सामने आने वाले की कोशिश की है, इस पोस्ट वास्तव में एक अंतिम उपाय है, im खोलने की कोशिश कर एक YouTubePlayerFragment एक नेविगेशन ड्रॉरYouTubePlayerFragment android.support.v4.app.Fragment को

का उपयोग कर

YouTubePlayerFragment android.support.v4.app.Fragment में ढाला नहीं जा सकता समस्या

संपादित सवाल यह है: मैं कोड को अद्यतन किया है अब मैं YouTubePlayerFragment के बजाय YouTubePlayerSupportFragment का इस्तेमाल किया है कि, मैं एक (मामले 4:; तोड़; टुकड़ा = नई यूट्यूब()) displayView विधि में त्रुटि मिलती है कह यूट्यूब से परिवर्तित नहीं कर सकते टुकड़ा करने के लिए मुख्य गतिविधि में, मैं एक logcat मैं कर सकता हूँ के बाद से नहीं मिल सकता है टी भी चलाते हैं यह

संपादित प्रश्न 2: कोड फिर से अद्यतन लेकिन अब मैं एक क्रम समस्या, यहाँ 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 to invoke virtual method 'void com.google.android.youtube.player.YouTubePlayerView.a()' on a null object reference 
07-22 22:15:09.782: E/AndroidRuntime(20603): at com.google.android.youtube.player.YouTubePlayerSupportFragment.onStart(Unknown Source) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.support.v4.app.Fragment.performStart(Fragment.java:1502) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:957) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.os.Handler.handleCallback(Handler.java:739) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.os.Handler.dispatchMessage(Handler.java:95) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.os.Looper.loop(Looper.java:135) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at android.app.ActivityThread.main(ActivityThread.java:5351) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at java.lang.reflect.Method.invoke(Native Method) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at java.lang.reflect.Method.invoke(Method.java:372) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908) 
07-22 22:15:09.782: E/AndroidRuntime(20603): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703) 

यहाँ जावा कोड,, आशा है कि कुछ एक मदद कर सकते हैं धन्यवाद है

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 to Initialize!", Toast.LENGTH_LONG).show(); 
    } 


} 

इस एक्सएमएल कोड

<?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> 

है यहां मुख्य गतिविधि जो नेविगेशन डॉ होता है awer

 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 to 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 from 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 to 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, Will add a 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, We will add a 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 the typed array 
     navMenuIcons.recycle(); 

     mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); 

     // setting the nav drawer list adapter 
     adapter = new NavDrawerListAdapter(getApplicationContext(), 
       navDrawerItems); 
     mDrawerList.setAdapter(adapter); 

     // enabling action bar app icon and behaving it as 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 for accessibility 
       R.string.app_name // nav drawer close - description for accessibility 
     ) { 
      public void onDrawerClosed(View view) { 
       //getActionBar().setTitle(mTitle); 
       // calling onPrepareOptionsMenu() to show action bar icons 
       invalidateOptionsMenu(); 
      } 

      public void onDrawerOpened(View drawerView) { 
       //getActionBar().setTitle(mDrawerTitle); 
       // calling onPrepareOptionsMenu() to hide action bar icons 
       invalidateOptionsMenu(); 
      } 
     }; 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     if (savedInstanceState == null) { 
      // on first time display view for 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 for 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() is triggered 
    */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     // if nav drawer is opened, hide the action items 
     boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 
     menu.findItem(R.id.action_settings).setVisible(drawerOpen && !drawerOpen); 
     return super.onPrepareOptionsMenu(menu); 
    } 

    /** 
    * Diplaying fragment view for selected nav drawer list item 
    * */ 
    private void displayView(int position) { 
     // update the main content by 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 and title, then close the 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 And Walters"); 
// } 

    /** 
    * When using the ActionBarDrawerToggle, you must call it during 
    * onPostCreate() and onConfigurationChanged()... 
    */ 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggls 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 


} 

उत्तर

1

अपने Youtube वर्ग पर

import com.google.android.youtube.player.YouTubePlayerFragment; 

के बजाय

import com.google.android.youtube.player.YouTubePlayerSupportFragment 

की कोशिश करो।

+0

नमस्कार धन्यवाद मैंने अभी यह किया है लेकिन अब मुख्य गतिविधि में एक त्रुटि प्राप्त करें, जिसमें मैं दृश्य यूट्यूब क्लास में जाने के लिए क्लिक करता हूं, यह कहता है कि यूट्यूब से खंड – user3088071

+0

में गुप्त नहीं हो सकता है यह त्रुटि है ... नया यूट्यूब() लाल रंग से रेखांकित किया गया है ............................. मामले 4: टुकड़ा = नई यूट्यूब(); ब्रेक; – user3088071

+0

, अपने 'Logcat' – Machado

7

YouTubePlayerFragmentYouTubePlayerSupportFragment के साथ बदलें क्योंकि यह संस्करण Fragment के समर्थन संस्करण का उपयोग करता है।

+0

हाय में डाला है, धन्यवाद, लेकिन जब मैं इसे करता हूं, तो डिस्प्ले व्यू विधि में मुख्य गतिविधि में जहां मैं यूट्यूब क्लास पर जाने के लिए क्लिक करता हूं कहते हैं कि यूट्यूब से खंड – user3088071

+0

मूल रूप से ई में गुप्त नहीं हो सकता है जहां भी आपको 'getFragmentManager()' मिल गया है, आपको 'getSupportFragmentManager() 'होना चाहिए।आपको अपने 'YouTubePlayerSupportFragment' के लिए'CreateView() 'ओवरराइड नहीं करना चाहिए (इसमें पहले से ही यूआई है)। – ianhanniballake

+0

हाय इयान और उस समय के लिए धन्यवाद, मैंने कोड और प्रश्न अपडेट किया है, अब मुख्य गतिविधि में इसकी एक त्रुटि है, क्या आपका मतलब है कि मुझे यूट्यूब क्लास में संपादन करना चाहिए? – user3088071

संबंधित मुद्दे