9

アクティビティ グループからアクティビティを開始しようとすると、結果が得られないようです。アクティビティとアクティビティ グループに onactivityresult を配置しましたか? 具体的には、ユーザーが Intent.ACTION_GET_CONTENT から写真/ビデオを選択できるようにしようとしていますが、何も返されませんか? 私は何を間違っていますか?

コードを呼び出す方法は次のとおりです。

Intent pickMedia = new Intent(Intent.ACTION_GET_CONTENT);
   pickMedia.setType("video/*");
   startActivityForResult(pickMedia,12345);

何か案は?

4

2 に答える 2

41

同様の問題がありました。サブアクティビティを管理するActivityGroupがありました。サブアクティビティの 1 つは、同様の外部インテント (私のアプリの外部) を呼び出しました。それを開始したサブアクティビティ内で onActivityResult を呼び出したことはありません。

Android ではサブアクティビティのネストされたレイヤーのみが許可されるため、問題が発生することが最終的にわかりました/思い出しました...つまり、サブアクティビティはサブアクティビティをネストできません。これを解決するには:

  1. getParent().startActivityForResult()サブアクティビティから呼び出す
  2. あなたの親(活動グループ)はonActivityResult. そこで、 this のサブクラスを作成してActivityGroup処理しましonActivityResultた。
  3. 必要に応じて、その結果をサブアクティビティに再ルーティングできます。で現在のアクティビティを取得するだけですgetLocalActivityManager().getCurrentActivity()。サブアクティビティはカスタム アクティビティから継承するためhandleActivityResult(requestCode, resultCode, data)、そのサブクラスにを追加しActivityGroupて呼び出すようにしました。
于 2010-12-31T10:38:44.557 に答える
4

親アクティビティで

protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    if (requestCode == YOUR_REQUEST_CODE)   {

        CHILD_ACTIVITY_NAME activity = (CHILD_ACTIVITY_NAME)getLocalActivityManager().getCurrentActivity();

        activity.onActivityResult(requestCode, resultCode, intent);}}

したがって、子アクティビティの onActivityResult が実行されます。

于 2013-02-24T00:55:37.693 に答える