2016-04-15 4 views
0

У меня есть несколько onActivityResult видов деятельности в приложении для Android, и у меня возникает проблема с двумя действиями, выполняемыми за один раз. Когда я открою свой сканер штрих-кода ZXing, он закроет соединение с моим Bluetooth-принтером. Вот мой код:Как разделить виды деятельности

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 к этому?

+0

Вы не можете отделять результаты с помощью requestCode? – Mahfa

+0

Вот что я думал, что мне нужно будет сделать, но я не уверен, как его реализовать. Я обновил вопрос. – Chrono124

+0

посмотрите здесь, я раньше не использовал zxing, но есть способ установить requestCode. http://stackoverflow.com/a/25630424/2690277. https://www.google.com/search?q=set+requestCode+in+zxing&ie=utf-8&oe=utf-8#q=set+intent+requestCode+in+zxing – Mahfa

ответ

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.

Смежные вопросы