0

我正在尝试播放画廊中的视频。单击按钮时,它应该开始在 videoView 中播放视频。但是我得到了指定的孩子已经有父母的例外。以下是我的代码:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button bt= (Button) findViewById(R.id.button1);
    final String filename = "/sdcard/myvideo.mp4";  
    Log.e("Video Error", "Problem Below");
     final VideoView videoView1 = (VideoView)findViewById(R.id.videoview);
        Log.e("Video Error", "Problem Above");
     setContentView(videoView1);
     videoView1.setVideoPath(filename);
    // videoView1.setMediaController(MainActivity.this);
     videoView1.requestFocus();
     bt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
              //String fileName = "android.resource://" + getPackageName() + "/" + R.raw.sample;

                Toast.makeText(getApplicationContext(), "Hey Baby", 5000);
              //videoView1.start();
              //Exit after saved
             // finish();

        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
}

当我尝试初始化我的 VideoView 时,它给出了以下异常:

:12:11.838: E/AndroidRuntime(1124): FATAL EXCEPTION: main
03-12 19:12:11.838: E/AndroidRuntime(1124): java.lang.RuntimeException: Unable to start      activity ComponentInfo{com.et.getimages/com.et.getimages.MainActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

请帮忙。

4

2 回答 2

0

我怀疑是因为你打setContentView()了两次电话。第一次创建 VideoView 然后当setContentView(videoView1);

但是,如果没有完整的堆栈跟踪,则无法分辨。

ps 你需要添加show()到你的 toast 以使其显示

于 2013-03-12T14:26:13.567 回答
0

您在此语句中设置内容视图:

setContentView(R.layout.activity_main);

然后您从layout/activity_main.xml另一个视图中定义的视图中获取:

(VideoView)findViewById(R.id.videoview);

这实际上是layout/activity_main.xml

然后你再次尝试设置内容视图:

setContentView(videoView1);

videoView1已经有父级,因为它是其中的一部分,layout/activity_main.xml因此您不能在其中使用此视图,setContentView()因为此方法正在为参数中给出的视图设置根目录。

于 2013-03-12T14:30:35.380 回答