如何在无法覆盖onActivityResult时判断子活动是否已完成

时间:2014-04-24 15:23:07

标签: android android-activity activity-finish

我将自定义视图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的方法?

1 个答案:

答案 0 :(得分:0)

我们可以使用Bundles将数据传递给子活动。

  Bundle b = new Bundle();

  b.putString(uri, "video/mp4");

  intent.putExtras(b); // where i is the intent

这些Bundle将信息从一个Activity传输到另一个Activity。