2013-03-19 134 views
0

我将下面的代码添加到我的应用程序中,以添加视频链接到我的原始文件夹中的视频,但我得到的错误 VideoView说VideoView cannot be resolved or is not a field我已经包括了所有相关的imports.Is在我的语法中的某处出现错误?对于videoview设置视频视图

VideoView StudentLife = (VideoView) findViewById(R.id.VideoView); 

     Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.learningatgmi); 

     videoview.setVideoURI(uri); 
     videoview.start(); 

我的XML布局如下:

<VideoView 
     android:id="@+id/videoView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView2" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="53dp" /> 
+0

运行时是编译时错误吗?你能显示xml布局文件吗? – 2013-03-19 12:36:47

+0

这是一个编译时错误,我只是添加了xml布局。 – 2013-03-19 12:39:32

+0

检查我的答案。 – 2013-03-19 12:43:37

回答

4

所以你的变量名是StudentLife

VideoView StudentLife = (VideoView) findViewById(R.id.VideoView); 

和你正在呼唤其他人OD对videoview这是不确定的变量..

所以下面的代码:

 videoview.setVideoURI(uri); 
     videoview.start(); 

应该是:

 StudentLife.setVideoURI(uri); 
     StudentLife.start(); 

EDIT1:

按照你XML中的线来获得实例的视频视图应该如下

VideoView StudentLife = (VideoView) findViewById(R.id.videoView1); 

完整的工作代码应该如下:

VideoView StudentLife = (VideoView) findViewById(R.id.videoView1); 
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.learningatgmi); 
StudentLife.setVideoURI(uri); 
StudentLife.start(); 

在侧面没有;你不应该使用类名作为变量名......在java中,变量的第一个字符也不应该是大写字母...因此,让'videoView'作为变量名。因此,下面应该是右边的工作代码变种名称..

VideoView videoView = (VideoView) findViewById(R.id.videoView1); 
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.learningatgmi); 
videoView.setVideoURI(uri); 
videoView.start(); 
+0

确实其实Myclass的名字是StudentLife.Is这仍然是正确的定义还是应该创建一个变量?谢谢 – 2013-03-19 12:45:56

+0

你应该创建一个其他名称的变量..''viewView'可以代替'StudentLife'在代码中,我张贴在答案.... – 2013-03-19 12:47:30

+0

非常感谢我刚刚意识到我正在做的错误R.id. – 2013-03-19 12:48:33

0

我的代码工作::

mc = new MediaController(this); 
vd.setMediaController(mc); 
vd.setVideoURI(intentUri); 
vd.start(); 
setContentView(vd); 
1

您的VideoView的ID是videoView1。所以,你应该使用R.id.videoView1得到从视图层次结构的VideoView对象的引用:

VideoView StudentLife = (VideoView) findViewById(R.id.videoView1); 
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.learningatgmi); 
StudentLife.setVideoURI(uri); 
StudentLife.start(); 
0

其实当你使用这个代码,

Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.learningatgmi); 
StudentLife.setVideoURI(uri); 

它通过URI为空,因此它会显示错误 所以而不是你不能使用下面的代码。

StudentLife=(VideoView)findViewById(R.id.videoplayer); 
StudentLife.setVideoURI(Uri.parse("android.resource://" +getPackageName()+ "/" +R.raw.sample)); 
StudentLife.requestFocus(); 
StudentLife.start(); 

不是在设置之前解析URI,而是在设置过程中通过它会更好。

+0

如果'uri'为null **如你所说**,那么'Uri.parse()'返回null。在第二种情况下它也将是'StudentLife.setVideoURI(null)'。 – Nizam 2013-11-26 07:25:36

+0

我早些时候遇到同样的问题,当我调试它时,我开始知道它返回null,然后我尝试给你的代码,它为我工作。 – Rohit 2013-11-26 08:28:13