findViewById(int)方法未定义,构造函数MediaController未定义

时间:2014-04-28 08:06:14

标签: android android-fragments fragment android-videoview

我正在创建此片段以流式传输视频,但我收到两条错误,声明方法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;
}
}

3 个答案:

答案 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,但如上所述,此行已经没有用了。