2017-11-22 13 views
0
@Override 
public void onActivityResult (int requestCode, int resultCode, Intent data){ 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
    if (result != null) { 
     if (result.getContents() == null) { 
      Log.d("MainActivity", "Cancelled"); 
      Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); 
     } else { 
      Log.d("MainActivity", "Scanned"); 
      Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show(); 
     } 
    } else { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

현재 작업 방법은^아래 Zxing 지역 데이터 비교 결과가 있습니까? 데이터에 대한 비교없이

는 결과가 (작동하지 않는) 중복

@Override 
public void onActivityResult (int requestCode, int resultCode, Intent data){ 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
    if (result != null) { 
     if (result.getContents() == 555821282,8882288,888822884,1145698,248635887,4477996) { 
      Log.d("MainActivity", "Yes"); 
      Toast.makeText(this, "Yes", Toast.LENGTH_LONG).show(); 
     } else { 
      Log.d("MainActivity", "No"); 
      Toast.makeText(this, "No: " + result.getContents(), Toast.LENGTH_LONG).show(); 
     } 
    } else { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

나는 정수가 너무 얻을이 있는지 데이터와 비교 방법 큰. 나는 500 UPC를 거기에두기 위해 가지고있다. 그러나 나는 기울인다. Android Studio의 어딘가에있는 파일에 숫자를 넣고 참조 할 수 있습니까? 이 문제에 대한 해결책은 무엇입니까?

답변

0

IntentResut.getContents()은 문자열을 반환합니다. Java에서 두 문자열을 비교하려면 String.equals(String) 메소드를 사용해야합니다. 비교할 500 UPC 값을 가지고 있기 때문에 귀하의 onActivityResult 당신은 아마 500 라인의 경우 문을 쓰고 싶지 않아,이

@Override 
public void onActivityResult (int requestCode, int resultCode, Intent data){ 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
    if (result != null) { 
     String data = result.getContents(); 
     if (data != null) { 
      if (data.equals("555821282") 
        || data.equals("8882288") 
        || data.equals("888822884") 
        /* ... rest of the options ... */) { 
       Log.d("MainActivity", "Yes"); 
       Toast.makeText(this, "Yes", Toast.LENGTH_LONG).show(); 
      } else { 
       Log.d("MainActivity", "No"); 
       Toast.makeText(this, "No: " + result.getContents(), Toast.LENGTH_LONG).show(); 
      } 
     } else { 
      // No data 
     } 
    } else { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

처럼 보일 것입니다. 대신 모든 UPC를 (문자열로) List에 넣은 다음 if 문에 목록에 바코드가 있는지 확인할 수있는 것이 좋습니다.

List<String> knownUpcs = Arrays.asList("555821282", "8882288", "888822884", "1145698", "248635887", "4477996"); 
... 
if (knownUpcs.contains(data)) { 
    // do your thing 
} 

목록은 정적으로 정의되어 있지만 디스크의 파일에서 UPC를 읽으면 목록을 만들 수 없습니다.