0

だからここに私のプログラムの基本的な構造があります

アクティビティ A (TabHost) --> タブ 1 (ActivityGroup) --> MainTab1Activity1

Tab 1 を使用して MediaStore.ACTION_IMAGE_CAPTURE を呼び出すと、すべて問題なく動作しますが、結果が必要な場合は (Tab 1 . startChildActivity の代わりに startIntentForResult を使用)、Activity A に戻ろうとしてクラッシュします。現在使用されているリソースの再割り当てを試みます。

私の質問は、Tab 1 を取得して結果を取得する方法です (Tab 1 から MainTabACtivity1 へのパススルー メソッドが既にあるので、そこで結果を取得できれば、私は最高です。どんな助けも大歓迎です :)

アクティビティ A コード:

intent = new Intent().setClass(this, Tab1Group.class);
intent.putExtra(main.USERNAME_RESULT, getIntent().getStringExtra(main.USERNAME_RESULT));
spec = tabHost.newTabSpec("tab1").setIndicator("Tab1Group", 
res.getDrawable(R.drawable.ic_tab_animals)).setContent(intent);
tabHost.addTab(spec);`

Tab1Group *活動グループ"

Intent faIntent = new Intent(this,MainTab1Activity1.class);
startChildActivity("MainTab1Activity1",faIntent);

MainTab1Activity1

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra("output", "EXTRA_OUTPUT");
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyy_MMM_dd_hh_mm_ss_aaa");
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(
new File(FindAnimal.fileOutput+"/"+"Random"+sdf.format(c.getTime())+
"_"+currentImageValue+".jpg")));
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
Tab1GroupparentActivity = (Tab1Group)getParent();
parentActivity.startChildActivity("TakePic",intent);
//parentActivity.startIntentForResult(intent,CAMERA_PICTURE);

したがって、目標はカメラから画像の結果を取得することですが、現在これは行われていません。最後のコメントアウト部分を試すと、Activity A コードを再初期化しようとします。

4

1 に答える 1

0

SO私がやったことは、私が使用startActivityしてグループを取り除いた標準アクティビティを使用することです。次に@Override OnWindowFocusChange、ウィンドウがフォーカスを取り戻すかどうかを制御します。次に、一時的な静的データ ホルダーを使用します。

これが私のコントローラーです:

public class CameraResultController extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        // Calendar c = Calendar.getInstance();
       //  SimpleDateFormat sdf = new SimpleDateFormat("yyyyy_MMM_dd_hh_mm_ss_aaa");
        // intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(FindAnimal.fileOutput+"/AnimalFound_"+sdf.format(c.getTime())+"_"+getIntent().getStringExtra(FindAnimal.NumAnimalsSubmit)+".jpg")));
         //intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
         startActivityForResult(intent, main.CAMERA_PICTURE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d("CAMERA RESULT", "Got Result");
        if(requestCode==main.CAMERA_PICTURE) {
            if(resultCode == Activity.RESULT_OK) {
                Uri uriImage = data.getData();
                Bundle extra = data.getExtras();
                CameraPictureData.currentCameraURI = uriImage;
            }else
                CameraPictureData.currentCameraURI = null;
        }
        super.onActivityResult(requestCode, resultCode, data);
        finish();
    }
}

public class CameraPictureData {

    public static Uri currentCameraURI = null; 

}

次に、OnWindowFocus で CameraPictureData にアクセスします。

于 2011-08-27T01:24:02.223 に答える