Java 如何区分从cardview子级的onclicklistener传递到OnActivityResult的意图

Java 如何区分从cardview子级的onclicklistener传递到OnActivityResult的意图,java,android,android-cardview,onactivityresult,Java,Android,Android Cardview,Onactivityresult,在阅读了stackoverflow上的多个页面后,我尝试了许多方法,但似乎无法使其工作 我有一个cardview,每个单击的孩子都有一个onclicklistener(使用setSingleEvent) 其中一个孩子使用条形码扫描仪,然后将扫描的条形码传递给另一个活动(通过onActivityResult) 但现在我需要另一个子项(cardview)来使用相同的条形码扫描仪,并将值传递给另一个活动。我不知道如何在onActivityResult方法中区分两次单击 但是,对于实现条形码扫描器的单个

在阅读了stackoverflow上的多个页面后,我尝试了许多方法,但似乎无法使其工作

我有一个cardview,每个单击的孩子都有一个onclicklistener(使用
setSingleEvent

其中一个孩子使用条形码扫描仪,然后将扫描的条形码传递给另一个活动(通过
onActivityResult

但现在我需要另一个子项(cardview)来使用相同的条形码扫描仪,并将值传递给另一个活动。我不知道如何在onActivityResult方法中区分两次单击

但是,对于实现条形码扫描器的单个子网格,该代码可以正常工作。
(finali==0)
。但是,如果
(finali==3)
,如何将不同的操作传递给
onActivityResult

private void setSingleEvent(GridLayout mainGrid) {
    //Loop all child item of main Grid
    for (int i = 0;i<mainGrid.getChildCount();i++){
        CardView cardView = (CardView) mainGrid.getChildAt(i);

          final int finali=i;
        cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (finali == 0){
                    Intent intent = BarcodeReaderActivity.getLaunchIntent(getApplicationContext(), true,false);
                    startActivityForResult(intent, BARCODE_READER_ACTIVITY_REQUEST);

                }
                else if (finali == 1){
                    startActivity(new Intent(getApplicationContext(),AllActiveCheckInActivity.class));
                }
                else if (finali == 2){
                    Log.d(TAG, "onClick: Reports Clicked");

                }
                else if (finali == 3){

                    Intent intent = BarcodeReaderActivity.getLaunchIntent(getApplicationContext(), true,false);
                    startActivityForResult(intent,BARCODE_READER_ACTIVITY_REQUEST);
                }

            }
        });
    }
}

调用
startActivityForResult
时,将不同的常量作为requestCode传递,而不是将相同的常量(
BARCODE\u READER\u ACTIVITY\u REQUEST
)传递给每个调用:

if (finali == 0) {
    Intent intent = BarcodeReaderActivity.getLaunchIntent(getApplicationContext(), true,false);
    startActivityForResult(intent, BARCODE_READER_ACTIVITY_REQUEST_FINALI_1);
}
// ... the remaining code of finali == 1 & finali == 2
else if (finali == 3) {
    Intent intent = BarcodeReaderActivity.getLaunchIntent(getApplicationContext(), true,false);
    startActivityForResult(intent,BARCODE_READER_ACTIVITY_REQUEST_FINALI_3);
}
然后检查onActivityResult方法中的请求代码:

if (requestCode == BARCODE_READER_ACTIVITY_REQUEST_FINALI_1 && data != null) {
   // Code for finali == 1
} else if (requestCode == BARCODE_READER_ACTIVITY_REQUEST_FINALI_3 && data != null) {
   // Code for finali == 3
}
if (requestCode == BARCODE_READER_ACTIVITY_REQUEST_FINALI_1 && data != null) {
   // Code for finali == 1
} else if (requestCode == BARCODE_READER_ACTIVITY_REQUEST_FINALI_3 && data != null) {
   // Code for finali == 3
}