2015-01-07 3 views
0

Может кто-то пожалуйста, помогите мне понять и решить, почему OnActivityResultListener не вызывается в коде ниже, я проверил журнал ошибок и я не могу найти решениеOnActivityResult Слушатель не называется

MainActivity

public void onClick(View v) { 
// TODO Auto-generated method stub 
//Handling multiple scan modes based on selection 
Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
if (type == "QR_CODE_MODE"){ 
    intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
}else if(type == "PRODUCT_MODE"){ 
    intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); 
}else { 
    intent.putExtra("SCAN_MODE", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR,PDF417,RSS_EXPANDED"); 
} 
startActivityForResult(intent, 0); 

} 


public void OnActivityResult(int requestCode, int resultCode, Intent intent){ 
super.onActivityResult(requestCode, resultCode, intent); 
Toast.makeText(getBaseContext(), requestCode, Toast.LENGTH_LONG).show(); 
if (requestCode == 0) { 
     if (resultCode == RESULT_OK){ 
     //we have a result 
      String contents = intent.getStringExtra("SCAN_RESULT"); 
      String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      formatTxt.setText("FORMAT: " + contents); 
      contentTxt.setText("CONTENT: " + format); 
     } 
    else if (resultCode == RESULT_CANCELED) { 
     // Handle cancel 
     formatTxt.setText("FORMAT: No results found"); 
     contentTxt.setText("CONTENT: No results found"); 
     Toast toast = Toast.makeText(this, "Scan was Cancelled!", Toast.LENGTH_LONG); 
     toast.setGravity(Gravity.TOP, 25, 400); 
     toast.show(); 
    } 
    } 
} 

ответ

2

почему OnActivityResultListener не называется

Поскольку OnActivityResultListener (это интерфейс в PreferenceManager) не является метод, который называют в родительской активности, когда финиш ребенка активность.

Вы можете получить результат в родительской деятельности пути внедрения OnActivityResultListener в родительской деятельности и переопределение onActivityResult как:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    ...do your work here 
} 
+0

Спасибо за ответ yar, но я не могу получить ясно. Вы хотите, чтобы я определил onActivityResult внутри родительского объекта onActivityResultListener? –

+0

@RazerWaran: пожалуйста, поделитесь обновленным кодом –

+0

@RazerWaran: вместо метода 'onActivityResultListener' используйте' onActivityResult', и этот метод уже находится в Activity, вам просто нужно переопределить его так же, как мы переопределяем onCreate, onResume ... –

1

Изменить

public void OnActivityResultListener(int requestCode, int resultCode, Intent intent){ 

к

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent intent){ 

onActivityResult() - метод, который вы можете переопределить в Activity, и @Override может автоматически проверить, переопределяет ли метод метод в супертипе.

+0

Спасибо за ответ яр, я пытался, но это не работает –

+0

могли бы вы разместить код? Благодарю. – iForests

+0

Я обновил код и разместил –

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