在一个类Java Android中使用同名方法
Posted
技术标签:
【中文标题】在一个类Java Android中使用同名方法【英文标题】:Use methods of the same name in one class Java Android 【发布时间】:2014-02-26 10:27:39 【问题描述】:我有一个使用视频视图显示视频流的应用。
由于 android 版本
但是 Vitamio 比 Android 视频视图库慢得多,我不想在所有设备上都使用它;我只想在旧的上使用它。
但是库的名称和方法是相同的: 即
import android.media.MediaController;
import io.vov.vitamio.MediaController;
在课程中,我只导入 android Media 控制器,然后像这样访问 vitamio:
io.vov.vitamio.widget.MediaController mediacontroller = new io.vov.vitamio.widget.MediaController(parentActivity);
在我想访问 vitamio 库的方法之一之前,它工作正常。例如:
videoView.io.vov.vitamio.widget.VideoView.setVideoURI(video);
这不起作用,因为正确的用法是:
videoView.setVideoURI(video);
如果我这样做了,那么会访问 Android 媒体播放器并且代码不正确。 如何访问同一个类中具有相同名称的方法。我希望能够根据用户的设备使用这两种方法。
提前致谢。
【问题讨论】:
您不必为两个类都输入完整路径。仅导入 1 个类,其他类按路径使用。 我没有导入这两个类,而是通过路径访问其中一个。我在访问这些方法时遇到问题,因为它们与导入的类具有相同的名称。 在这种情况下,您应该向我们展示您对这些类所做的所有调用,以便我们为您提供解决方案。 【参考方案1】:videoView.io.vov.vitamio.widget.VideoView.setVideoURI(video);
通过这样做,您试图以静态方式调用该方法。
您应该将 videoView 变量声明为 videoView.io.vov.vitamio.widget.VideoView
的实例,然后调用适当的方法:
// declaration of variable as an instance of the correct class
videoView.io.vov.vitamio.widget.VideoView videoView;
// now, use the method
videoView.setVideoURI(video);
【讨论】:
问题是vitamio库使用的是Android VideoView。我需要像这样声明视频视图变量:private VideoView videoView; videoView.io.vov.vitamio.widget.VideoView 是不是安卓原版的子类? 那我真的不明白为什么用完整的包名声明变量以避免编译器混淆对你不起作用......为什么你需要将你的变量声明为私有 VideoView videoView; ? 是的,我相信你是对的,它应该通过使用完整的包名声明变量来工作。我想我的代码中的其他地方有错误。 如果您有错误,请不要犹豫再问一个问题;) 不要忘记分享完整的 LogCat 错误和相关代码,它将帮助我们帮助您。【参考方案2】:检查您的类 VideoView 来自类型“videoView.io.vov.vitamio.widget.VideoView”而不是“android.widget.VideoView”。
【讨论】:
【参考方案3】:你不需要videoView.io.vov.vitamio.widget.VideoView.setVideoURI(video)
,它应该是videoView.setVideoURI(video)
,其中videoView的类型是io.vov.vitamio.widget.VideoView
。
如果是Object
,则可以显式转换:((io.vov.vitamio.widget.VideoView)myObject).setVideoURI(video)
。
【讨论】:
以上是关于在一个类Java Android中使用同名方法的主要内容,如果未能解决你的问题,请参考以下文章