2011-06-22 7 views
8

के साथ काम नहीं कर रहा है मैं एक वीडियो व्यूअर खंड बनाने की कोशिश कर रहा हूं। नीचे दो मामले हैं जिनकी मैंने कोशिश की है और अवलोकन। दोनों ही मामलों के लिए टुकड़ा के देखे जाने के बाद लेआउट से फुलाया जाता है: अजीब व्यवहार - VideoViewer Fragment MediaController

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center"> 

<VideoView android:id="@+id/fragment_video_viewer_video" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center" /> 
</RelativeLayout> 

केस 1: VideoView मीडिया नियंत्रक के बिना - ठीक काम करता है। जब मैं VideoView पर स्पर्श अनुप्रयोग क्रैश हो - VideoView मीडिया नियंत्रक के साथ: नीचे onActivityCreated विधि के लिए कोड

/* Initialize the variables here, retrieve views and */ 
@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    // Assignment for the local variables 
    mVideoView = (VideoView) getView().findViewById(R.id.fragment_video_viewer_video); 
    mVideoView.setVideoPath("/sdcard/family_guy_test.3gp");//(videoUri); 
    mVideoView.requestFocus(); 
    mVideoView.start(); 
} 

केस 2 है।

WARN/WindowManager(124): Failed looking up window 
WARN/WindowManager(124): java.lang.IllegalArgumentException: Requested window null does not exist 
WARN/WindowManager(124):  at com.android.server.WindowManagerService.windowForClientLocked(WindowManagerService.java:9398) 
WARN/WindowManager(124):  at com.android.server.WindowManagerService.addWindow(WindowManagerService.java:1906) 
WARN/WindowManager(124):  at com.android.server.WindowManagerService$Session.add(WindowManagerService.java:6876) 
WARN/WindowManager(124):  at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:66) 
WARN/WindowManager(124):  at com.android.server.WindowManagerService$Session.onTransact(WindowManagerService.java:6848) 
WARN/WindowManager(124):  at android.os.Binder.execTransact(Binder.java:288) 
WARN/WindowManager(124):  at dalvik.system.NativeStart.run(Native Method) 
WARN/WindowManager(124): Attempted to add window with token that is not a window: null. Aborting. 
WARN/dalvikvm(8144): threadid=1: thread exiting with uncaught exception (group=0x400287f0) 
ERROR/AndroidRuntime(8144): FATAL EXCEPTION: main 
ERROR/AndroidRuntime(8144): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? 
ERROR/AndroidRuntime(8144):  at android.view.ViewRoot.setView(ViewRoot.java:505) 
ERROR/AndroidRuntime(8144):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 
ERROR/AndroidRuntime(8144):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
ERROR/AndroidRuntime(8144):  at android.widget.MediaController.show(MediaController.java:304) 
ERROR/AndroidRuntime(8144):  at android.widget.MediaController.show(MediaController.java:249) 
ERROR/AndroidRuntime(8144):  at android.widget.VideoView.toggleMediaControlsVisiblity(VideoView.java:567) 
ERROR/AndroidRuntime(8144):  at android.widget.VideoView.onTouchEvent(VideoView.java:518) 
ERROR/AndroidRuntime(8144):  at android.view.View.dispatchTouchEvent(View.java:3766) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671) 
ERROR/AndroidRuntime(8144):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) 
ERROR/AndroidRuntime(8144):  at android.app.Activity.dispatchTouchEvent(Activity.java:2086) 
ERROR/AndroidRuntime(8144):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863) 
ERROR/AndroidRuntime(8144):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671) 
ERROR/AndroidRuntime(8144):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) 
ERROR/AndroidRuntime(8144):  at android.app.Activity.dispatchTouchEvent(Activity.java:2086) 
ERROR/AndroidRuntime(8144):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655) 
ERROR/AndroidRuntime(8144):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1785) 
ERROR/AndroidRuntime(8144):  at android.os.Handler.dispatchMessage(Handler.java:99) 
ERROR/AndroidRuntime(8144):  at android.os.Looper.loop(Looper.java:123) 
ERROR/AndroidRuntime(8144):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
ERROR/AndroidRuntime(8144):  at java.lang.reflect.Method.invokeNative(Native Method) 
ERROR/AndroidRuntime(8144):  at java.lang.reflect.Method.invoke(Method.java:521) 
ERROR/AndroidRuntime(8144):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
ERROR/AndroidRuntime(8144):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
ERROR/AndroidRuntime(8144):  at dalvik.system.NativeStart.main(Native Method) 
WARN/ActivityManager(124): Force finishing activity com.comp.ias/.MainActivity 
WARN/ActivityManager(124): Activity pause timeout for HistoryRecord{43f755b0 com.comp.ias/.MainActivity} 
WARN/WindowManager(124): No window to dispatch pointer action 1 

उत्तर

22

मैं पता लगा है कि समस्या संदर्भ मैं था में वास्तव में था: नीचे onActivityCreated विधि के लिए कोड

/* Initialize the variables here, retrieve views and */ 
@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    // Assignment for the local variables 
    mVideoView = (VideoView) getView().findViewById(R.id.fragment_video_viewer_video); 
    mVideoView.setVideoPath("/sdcard/family_guy_test.3gp");//(videoUri); 
    MediaController mediaController = new MediaController(getActivity().getApplicationContext()); 
    mediaController.setAnchorView(mVideoView); 
    mVideoView.setMediaController(mediaController); 
    mVideoView.requestFocus(); 
} 

logcat उत्पादन नीचे दिया गया है है का उपयोग करते हुए। मुझे अनुप्रयोग संदर्भ के बजाय गतिविधि संदर्भ का उपयोग करना पड़ा। अधिक विशेष रूप से, मुझे करना था:

MediaController mediaController = new MediaController(getActivity()); 

कौन सा संदर्भ उपयोग करने के लिए प्रलेखन बहुत स्पैस है। कभी-कभी, किसी भी संदर्भ का उपयोग किया जा सकता है। कभी-कभी, हमें एक विशिष्ट संदर्भ का उपयोग करने की आवश्यकता होती है। मुझे लगता है कि संदर्भ के उपयोग के पीछे अंतर्ज्ञान यह है कि, "यदि किसी वर्ग का एक उदाहरण किसी गतिविधि से जुड़ा हुआ है, तो गतिविधि संदर्भ का उपयोग करें, अन्यथा एप्लिकेशन संदर्भ का उपयोग करें"।

+0

दरअसल, यह समस्या थी, हालांकि मेरे पास आपके लिए एक सवाल है: मैं वही काम करने की कोशिश कर रहा हूं, लेकिन समस्या यह है कि मीडिया नियंत्रक बटन कोई कार्रवाई नहीं करते हैं, इसलिए मैं रोक/ढूंढ नहीं सकता/स्ट्रीमिंग क्लिप रिवाइंड करें? क्या यह आपके साथ भी हुआ है, या क्या ऐसा कुछ है जो मुझे याद आ रहा है? मैं संगतता पैक से टुकड़ों का उपयोग कर रहा हूं - क्या यह एक संभावित कारण है? इस त्रुटि के कारण – r1k0

+0

मैं लगभग पागल हो जाऊंगा। धन्यवाद @ 500865। – mertaydin

+0

@ 500865 आपके इनपुट के लिए धन्यवाद, इससे मुझे बहुत मदद मिली। मेरी राय में, एंड्रॉइड का सबसे बुरा हिस्सा संदर्भ/गतिविधि है। कभी-कभी, किसी फ़ंक्शन में संदर्भ पैरामीटर होता है, लेकिन वास्तव में गतिविधि की आवश्यकता होती है। – Qylin