我将自定义视图myView
开发为库。我从视图组件的方法中激活了视频播放活动:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri uri = Uri.parse(uriPath);
intent.setDataAndType(uri, "video/mp4");
myView.getContext().startActivity(intent);
我需要知道播放何时结束。我无法使用startActivityForResult
并覆盖活动的onActivityResult
,因为我只能访问我的视图,而不能访问其中使用的上下文 - myView.getContext()
所以我创建了自己的活动PlayVideoActivity
作为包装器。解雇它:
Intent intent = new Intent(mAdView.getContext(), PlayVideoActivity.class);
intent.putExtra(PlayVideoActivity.EXTRAS_URI, uriPath);
mAdView.getContext().startActivity(intent);
PlayVideoActivity
活动itsefl:
public class PlayVideoActivity extends Activity {
public static final String EXTRAS_URI = "uri";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String uriString = getIntent().getExtras().getString(EXTRAS_URI);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri uri = Uri.parse(uriString);
intent.setDataAndType(uri, "video/mp4");
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
finish();
}
}
PlayVideoActivity.onActivityResult
是"地点"我知道视频播放已完成,但我无法从此处访问myView
。 AFAIK我无法将对象引用传递给另一个活动。
从这一点开始,有没有办法调用myView
的方法?
答案 0 :(得分:0)
我们可以使用Bundles将数据传递给子活动。
Bundle b = new Bundle();
b.putString(uri, "video/mp4");
intent.putExtras(b); // where i is the intent
这些Bundle将信息从一个Activity传输到另一个Activity。