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