2017-04-26 110 views
0

我正在使用视频视图,我想为它设置一个媒体控制器,并且我像下面的代码那样做了它,但是当我点击播放按钮时,应用程序将会与null点异常一起崩溃。我不知道为什么,因为我确定了一切。 (当我削减'mediaC.setAnchorView(查看);'视频将真正播放,但媒体控制器不会出现。) 谢谢你的回答。如何为videoview设置mediacontroller

public class VideoActivity extends Activity { 
    Button btnPaly; 
    VideoView videoPlayer; 
    MediaController mediaC; 
    String videoPath; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    btnPaly = (Button) findViewById(R.id.btnPlay); 
    videoPlayer = (VideoView) findViewById(R.id.videoView); 

    Bundle bundle = getIntent().getExtras(); 
    if (bundle != null) { 
     videoPath = bundle.getString(Const.VIDEO_PATH); 
    } 

    btnPaly.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     videoPlayer.setVideoPath(videoPath); 
     videoPlayer.setMediaController(mediaC); 
     mediaC.setAnchorView(view); // I get Null piont exception here 
     videoPlayer.start(); 
     } 
    }); 

    } 
} 

这里是我的XML:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/rootLayout" 
    tools:context="simplevideoplayer.app.codenevisha.com.videoplayer.VideoActivity"> 


    <Button 
     android:id="@+id/btnPlay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="75dp" 
     android:text="Play" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     android:layout_marginStart="75dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginBottom="-1dp" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintHorizontal_bias="0.342"/> 

    <VideoView 
     android:id="@+id/videoView" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintBottom_toTopOf="@+id/btnPlay" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintVertical_bias="1.0" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintHorizontal_bias="0.0"/> 
</android.support.constraint.ConstraintLayout> 
+0

就在上定义的MediaController对象创建,然后将视图添加到否则错误会喜欢在空对象引用中添加视图...... –

回答

2

你忘了实例化MediaController,所以它的空。

onCreate()方法试试这个(要注意的第一行):

 MediaController mediaController = new MediaController(this); 
     mediaController.setAnchorView(videoView); 
     videoView.setMediaController(mediaController); 
+0

谢谢,它的工作原理,但我不知道为什么当我在onCreate之前定义mediaController时它不起作用! – Ehsan

+0

@Ehsan这是因为活动的基本上下文尚未附加。您需要在onCreate或其他生命周期方法中实例化它,以确保上下文连接到它的基本上下文,因此是有效的。在Android中需要Context的许多其他对象的行为也是一样的 –

0

试试这个:

public class VideoActivity extends Activity { 
    Button btnPaly; 
    VideoView videoPlayer; 
    MediaController mediaC; 
    String videoPath; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    btnPaly = (Button) findViewById(R.id.btnPlay); 
    videoPlayer = (VideoView) findViewById(R.id.videoView); 

    Bundle bundle = getIntent().getExtras(); 
    if (bundle != null) { 
     videoPath = bundle.getString(Const.VIDEO_PATH); 
    } 

    mediaC = new MediaController(this); 
    mediaC.setAnchorView(videoView); 
    videoView.setMediaController(mediaC); 

    btnPaly.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     videoPlayer.setVideoPath(videoPath); 
     videoPlayer.setMediaController(mediaC); 
     mediaC.setAnchorView(view); // I get Null piont exception here 
     videoPlayer.start(); 
     } 
    }); 

    } 
} 
相关问题