2015-10-30 3 views
0

Итак, у меня есть RegisterActivity.java, где после регистрации пользователем нажмите в ScanActivity.java метод ScanActivity().Возврат результата к другому классу

В ScanActivity() он начнет операцию сканирования и вернет результат сканирования обратно в RegisterActivity.java.

Используя результат сканирования, проверка подлинности пользователя произойдет в RegisterActivity.java.

Как это сделать?

В RegisterActivity.java

// call ScanActivity 
ScanActivity scanActivity = new ScanActivity(); 

// get scan result from ScanActivity 
String scanResult = scanActivity.ScanActivity(); 

// compare with useridtxt 
// if useridtxt same with scan result, start save into parse 
if (useridtxt.equals(scanResult)) { 
    // some code here 
} else if (!useridtxt.equals(scanResult)) { 
    // some code here 
} else { 
    // some code here 
} 

В ScanActivity.java

public class ScanActivity extends Activity { 

public static final int CODE39 = 39; 
private static final int ZBAR_SCANNER_REQUEST = 0; 

String ScanActivity() { 

    Intent intent = new Intent(this, ZBarScannerActivity.class); 
    intent.putExtra(ZBarConstants.SCAN_MODES, new int[]{Symbol.CODE39}); 
    startActivityForResult(intent, ZBAR_SCANNER_REQUEST); 
    String scanResult = getIntent().getStringExtra(ZBarConstants.SCAN_RESULT); 
    return scanResult; 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (resultCode == RESULT_OK) 
    { 
     // maybe save the scan result here, and pass it to String scanResult in RegisterActivity.java? 
    } else if(resultCode == RESULT_CANCELED) { 
     Toast.makeText(this, "Camera unavailable", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

ты поставил onActivityResult в неправильном классе или вы напечатали это неправильно? – therealprashant

+0

** Не делайте этого ** 'ScanActivity scanActivity = new ScanActivity();'. Используйте жизненный цикл активности. Запустите их с помощью Intents и переопределите методы действий. [Возврат к предыдущему действию с разными данными] (http://stackoverflow.com/questions/18243515/android-going-back-to-previous-activity-with-different-intent-value/18243541#18243541) – codeMagic

+0

@therealprashant I Угадайте, что это уже правильно, поскольку оно предназначено для ScanActivity()? – August

ответ

0

Это довольно просто. пример кода может работать, как показано ниже

startActivityForResult(Intent intent, int requestCode); //Fill intent with your desired class. 

В целевом классе (ScanActivity), не забудьте поставить результаты обратно

setResult (int resultCode, Intent data) //in data bundle put all your required output 

Таким образом, вы можете извлечь данные сопоставления с ожидаемым результатом код.

И в классе вызывающего абонента в настоящее время

protected void onActivityResult (int requestCode, int resultCode, Intent data) {} //Your logic to manipulate data 
Смежные вопросы