我正在创建此片段以流式传输视频,但我收到两条错误,声明方法findViewById(int)未定义且构造函数MediaController未定义。
public class CommunityFragment extends Fragment {
VideoView videoview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_community, container, false);
VideoView videoView=(VideoView)v.findViewById(R.id.VideoView);
MediaController mediaController = new MediaController(getActivity().getApplicationContext());
String str="http://202.73.9.10:1935/live2/smil:kctv_all.smil/playlist.m3u8";
Uri uri = Uri.parse("first_uri");
mediaController.setAnchorView(videoView);
videoView.setVideoURI(uri);
videoView.setMediaController(mediaController);
videoView.start();
return v;
}
}
答案 0 :(得分:0)
你有
VideoView videoView=(VideoView)getActivity().findViewById(R.id.VideoView);
和
videoview = (VideoView)findViewById(R.id.VideoView);
如果VideoView属于活动,那么第一行就可以了,你可以删除第二行。它VideoView属于Fragment,你可以使用
videoview = (VideoView)getView().findViewById(R.id.VideoView);
并摆脱第一个
答案 1 :(得分:0)
使用fragmet时,请将您的代码和所有方法放在OnCreateView中, 因为在创建活动时,片段在片段创建时有自己的实现。
例如:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.frag_timeline, container, false);
initViews(v);
return v;
}
我的初始化视图功能:
private void initViews(View v)
{
profileName = (TextView) v.findViewById(R.id.profileName);
profilePic = (ImageView) v.findViewById(R.id.profilePic);
profileNameSymbol= (TextView) v.findViewById(R.id.profileNameSymbol);
}
答案 2 :(得分:0)
你已经有了这个:
MediaController mediaController = new MediaController(getActivity().getApplicationContext());
几行之后,你这样做了:
mediaController = new MediaController(this);
this
是片段,片段不是有效的Context
。您可以使用getActivity()
代替this
,但如上所述,此行已经没有用了。