0

私は小さな tabActivity アプリケーションを作成し、zxing を実行して、ActivityGroup を使用してタブを変更せずに結果を表示したいと考えています。ActivityGroup がなくてもすべて正常に動作します。

そして、これが私のScanActivityのコードです。activityGroup を「有効」にすると、onActivityResult に遭遇することはありません...:

  class ScanButtonClickListener implements OnClickListener {
        @Override
        public void onClick(View v) {
            IntentIntegrator.initiateScan(BarcodeActivity.this);
        }
    }  

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
           IntentResult scanResult = 
                IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
           Log.v("barcode", scanResult.getContents().toString());
   }

マニフェストの一部を次に示します。

activity android:name=".barcode.BarcodeActivity"
 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
 android:screenOrientation="portrait">
</activity>     
<activity android:name=".tabGroups.BarcodeTabGroupActivity"></activity> 

そして、現時点ではbarcodeActivityのみを起動するTabGroupActivity:

public class BarcodeTabGroupActivity extends TabGroupActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startChildActivity("BarcodeActivity", new Intent(this, BarcodeActivity.class));
    }
}

そして、フィルタリングされたログ:

08-04 15:59:02.093: DEBUG/DecodeHandler(4477): 1 ミリ秒でバーコードを発見
08-04 15:59:02.144: DEBUG/CaptureActivityHandler(4477): デコード成功メッセージを
取得DEBUG/CaptureActivityHandler(4477): 返されたスキャン結果メッセージ
android::CameraHardwareSec::stopPreview() : プレビューが実行されていない、何もしない
08-04 15:59:03.941: INFO/WindowManager(109): 回転を 0 に設定、animFlags =1
08-04 15:59:03.957: INFO/ActivityManager(109): 設定が変更されました: { scale=1.0 imsi=0/0 loc=en_US touch=3 keys=1/1/2 nav=1/1 orien= 1 レイアウト=34 uiMode=17 seq=72}

それはActivityManagerの何かに違いないと思います..zxingが終了するとすぐに、ボタンを表示して結果が返されません。

任意のヒント?ありがとうございます!

4

1 に答える 1

1

わかりました、私は自分でこの問題を解決することができました。私のソリューションに興味のある方は、こちらをご覧ください。

子アクティビティ「BarcodeActivity」でスキャンを開始する代わりに、親アクティビティを参照しました。

class ScanButtonClickListener implements OnClickListener {
    @Override
    public void onClick(View v) {
            //get the parent activity
        TabGroupActivity parentActivity = (TabGroupActivity) getParent();
        IntentIntegrator.initiateScan(parentActivity);
    }
}  

親 BarcodeTabGroupActivity 内の onActivityResult を介して結果にアクセスできるようになりました。

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    Log.v("barcode_tabgroup", scanResult.getContents().toString());
  }

この onActivityResult 内で、次の childActivity を開始してスキャン結果を処理できるようになりました...それが良い方法かどうかはわかりませんが、うまくいきます。

を使用して他の子アクティビティを終了する必要があると思いました

BarcodeActivity childActivity = (BarcodeActivity) getCurrentActivity();
childActivity.finish();

しかし、それはすべてを撃墜します..

于 2011-08-09T23:21:36.030 に答える