如何分开活动

时间:2016-04-15 18:24:41

标签: java android android-studio bluetooth zxing

我的Android应用中有几个onActivityResult个活动,我遇到了一次运行两个活动的问题。当我打开ZXing条形码扫描仪时,它将关闭与我的蓝牙打印机的连接。这是我的代码:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case REQUEST_ENABLE_BT:
                if (resultCode == Activity.RESULT_OK) {
                    Toast.makeText(this, "Bluetooth open successful", Toast.LENGTH_LONG).show();
                } else {
                    finish();
                }
                break;
            case REQUEST_CONNECT_DEVICE:
                if (resultCode == Activity.RESULT_OK) {
                    String address = data.getExtras()
                            .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
                    con_dev = mService.getDevByMac(address);

                    mService.connect(con_dev);
                }
                break;
        }
            IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
            if (scanningResult != null) {
                String scanContent = scanningResult.getContents();
                String scanFormat = scanningResult.getFormatName();
                //formatTxt.setText("FORMAT: " + scanFormat);
                edtContext.setText(scanContent);
            } else {
                Toast toast = Toast.makeText(getApplicationContext(),
                        "No scan data received!", Toast.LENGTH_SHORT);
                toast.show();
            }
    }

将这些活动分开以使它们不相互重叠的最佳方法是什么?

更新: 正如@Mahfa所说,我需要在扫描活动中添加一个requestCode。这是我开始扫描活动按钮的代码:

btnBarcode = (Button) findViewById(R.id.btnBarcode);
        OnClickListener BarcodeOnClickListener = new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.btnBarcode) {
                    IntentIntegrator integrator = new IntentIntegrator(PrintDemo.this);
                    integrator.initiateScan();
                }
            }
        };
        btnBarcode.setOnClickListener(BarcodeOnClickListener);

我需要做什么才能将requestCode添加到此处?

1 个答案:

答案 0 :(得分:0)

@Mahfa通过他发布的链接让我走上了正确的轨道,最终我找到了这个代码示例,解决了我的问题http://www.programcreek.com/java-api-examples/index.php?source_dir=jdkernel-updater-master/src/jdkernel/ui/ThemeListNewActivity.java

这是我完成的代码:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case REQUEST_ENABLE_BT:
                if (resultCode == Activity.RESULT_OK) {
                    Toast.makeText(this, "Bluetooth open successful", Toast.LENGTH_LONG).show();
                } else {
                    finish();
                }
                break;
            case REQUEST_CONNECT_DEVICE:
                if (resultCode == Activity.RESULT_OK) {
                    String address = data.getExtras()
                            .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
                    con_dev = mService.getDevByMac(address);

                    mService.connect(con_dev);
                }
                break;
            case IntentIntegrator.REQUEST_CODE:
                IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
                if (scanningResult != null) {
                    String scanContent = scanningResult.getContents();
                    String scanFormat = scanningResult.getFormatName();
                    //formatTxt.setText("FORMAT: " + scanFormat);
                    edtContext.setText(scanContent);
                } else {
                    Toast toast = Toast.makeText(getApplicationContext(),
                            "No scan data received!", Toast.LENGTH_SHORT);
                    toast.show();
                }
                break;
        }

我无需更改OnClickListener上的任何内容。谢谢你指点我正确的方向@Mahfa。