2017-01-25 10 views
0

У меня есть активность A и B. ФрагментАргумент «Намерение данные» из onActivityResult является нулевым

В AI есть этот метод:

private void installApp(String path){ 
    Intent i = new Intent(Intent.ACTION_VIEW); 
    fileUri = Uri.fromFile(new File(path)); 
    i.setDataAndType(fileUri, "application/vnd.android.package-archive"); 
    i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    B.startActivityForResult(i, 101); //B has been initialized elsewhere 
} 

который позже называет это переопределение в B:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    try{ 
     super.onActivityResult(requestCode, resultCode, data); 
     //Can't d stuff with data because it's Null. 
    } 
    }catch (Exception e){ 
    //Handles the exception 
    } 
} 

Я искал какое-то время и до сих пор не могу понять, почему данные являются нулевыми. Что я упустил?!

спасибо.

+0

если B - ваш фрагмент? –

ответ

0

В Фрагменте B вы звоните startActivityForResult(new Intent(getActivity(), ActivityA.class), REQUEST_CODE)? (REQUEST_CODE будучи ИНТ)

если да, то:

В активность А вы не начиная деятельности для результата. вам необходимо позвонить: finish();

в активность А вместо startActivityForResult();

обновление код выглядеть следующим образом:

private void installApp(String path){ 
    Intent i = new Intent(Intent.ACTION_VIEW); 
    fileUri = Uri.fromFile(new File(path)); 
    i.setDataAndType(fileUri, "application/vnd.android.package-archive"); 
    i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    setResult(RESULT_OK, i); 
    finish(); 

} 
0

The documentation for ACTION_VIEW не имеет «Выход: ничего», что означает, что ACTION_VIEW реализации не дайте результат, и поэтому использование ACTION_VIEW с startActivityForResult() бессмысленно.

+0

Действительно, в этом была проблема. Спасибо. – whynottodayhum