如何在Bundle中配置VideoView并跨布局获取视频与TextView内容
解决"Cannot resolve method 'into(android.widget.VideoView)' "错误及页面间视频与文本传递方案
一、错误原因与修复
这个错误的核心是图片加载库(如Glide、Picasso)的into()方法仅支持ImageView,不兼容VideoView,不能用这类库直接加载视频到VideoView。要加载视频到VideoView,需使用Android原生API:
- 加载本地视频文件:
videoView.setVideoPath("/sdcard/your_video.mp4"); videoView.start();
- 加载网络视频地址:
Uri videoUri = Uri.parse("https://your-video-url.mp4"); videoView.setVideoURI(videoUri); videoView.start();
二、页面间传递视频与文本内容
要实现点击跳转详情页并传递视频信息和文本内容,按以下步骤操作:
1. 列表页跳转时传递数据
在列表项的点击事件中,通过Intent传递视频地址(本地路径或网络URL)和文本内容:
// 列表项点击事件 Intent intent = new Intent(ListActivity.this, DetailActivity.class); // 传递视频地址 intent.putExtra("VIDEO_URL", videoUrl); // 传递TextView的文本内容 intent.putExtra("TEXT_CONTENT", textView.getText().toString()); startActivity(intent);
2. 详情页接收数据并加载
在详情页的onCreate方法中,获取传递的数据,为VideoView和TextView赋值:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); VideoView detailVideoView = findViewById(R.id.detail_video_view); TextView detailTextView = findViewById(R.id.detail_text_view); // 获取传递的参数 String videoUrl = getIntent().getStringExtra("VIDEO_URL"); String textContent = getIntent().getStringExtra("TEXT_CONTENT"); // 设置文本内容 detailTextView.setText(textContent); // 加载并播放视频 if (videoUrl != null) { Uri videoUri = Uri.parse(videoUrl); detailVideoView.setVideoURI(videoUri); // 可选:设置准备完成后自动播放 detailVideoView.setOnPreparedListener(mp -> mp.start()); } }
3. 关键注意事项
- 若加载网络视频,需在
AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
- 本地视频需注意文件权限,Android 10及以上需使用MediaStore或MANAGE_EXTERNAL_STORAGE权限访问外部存储文件。
内容的提问来源于stack exchange,提问作者Aina Syahirah Shafian
相关产品推荐
相关产品推荐

