Ошибка на super.onActivityResult() почему?
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data)
if (requestCode == Selectedimage && resultCode == RESULT_OK && data != null) {
Uri pickedImage = data.getData();
Intent send= new Intent(Selection.this,Imagepage.class);
send.putExtra("pickedImage",pickedImage.toString());
startActivity(send);
}
}
какая польза от добавления этого super.onActivityResult
линия? и также, когда я добавляю это, это показывает некоторую ошибку.
3 ответа
Прежде всего, если вы получаете ошибку - всегда показывайте logcat. Во-вторых, если этот метод объявлен в классе, расширяющем Activity
нет необходимости звонить super
там, так как этот метод пуст в Activity
учебный класс:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
onActivityResult()
это немного похоже onOptionMenuSelected()
, таким образом, чтобы:
- Основываясь на параметрах, вы можете сказать, должен ли этот вызов функции обрабатываться на этом уровне
- если это так, обработайте его и верните (true)
- если нет, просто вызовите реализацию суперкласса
Поэтому в вашем фрагменте onActivityResult()
, вы должны сначала проверить, если requestCode
соответствует тому, что вы установили ранее, если так, обработайте данные и вернитесь. Если нет, просто вернитесь с super.onActivityResult()
,
Простой пример может выглядеть так:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case SELECT_FILE_TO_UPLOAD:
// upload a file
return;
case SELECT_FILE_TO_DELETE:
// delete a file
return;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
Вызов на самом деле ничего не делает ( ссылка на исходный код), так что вы можете его пропустить, если он вызывает проблемы.
Факт, что это делает, странно, учитывая пустую супер реализацию.