Bundle extra возвращает NULL
У меня проблемы.
В классе "А" у меня есть код:
Intent cInt = new Intent(Add_Product_Page.this, CategoryListActivity.class);
Bundle extra = new Bundle();
extra.putBoolean("for_result", true);
startActivityForResult(cInt, GET_CATEGORY, extra);
Этот код из другого класса, который запускает действие
Bundle extra = getIntent().getExtras();
if (extra != null) {
isforResult = cInt.getBooleanExtra("for_result", true);
setIsforResult(isforResult);
} else {
setIsforResult(false);
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Category");
}
Я отлаживал класс A и получал значение extra как true, но когда я отлаживал другой класс, я получал NULL в дополнительном
Кто-нибудь может мне помочь.
заранее спасибо
4 ответа
startActivityForResult()
3-й аргумент (Bundle option
) это не "лишние" связки.
См. Context#startActivity(Intent, Bundle) для подробностей. Это конфигурация запуска.
использование Intent#putExtra(String, boolean)
для логических дополнений.
Intent intent = new Intent(Add_Product_Page.this, CategoryListActivity.class);
intent.putExtra("for_result", true);
startActivityForResult(intent, GET_CATEGORY);
затем
boolean b = getIntent().getBooleanExtra("for_result", false);
Это эквивалентно
boolean b = getIntent().getExtras().getBoolean("for_result");
Также вы можете проверить intent
имеет дополнительный параметр или нет:
intent.hasExtra("for_result");
Попробуй вот так
isforResult = extra.getBoolean("for_result", true);
и удали это Intent extra = getIntent();
линия это дубликат
Попробуй это
Bundle extra = getIntent().getExtras();
if (extra != null) {
isforResult = extra.getBoolean("for_result", true);
setIsforResult(isforResult);
} else {
setIsforResult(false);
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Category");
}
Использовать в упражнении А
Intent in = new Intent(this, RegistrationActivity.class);
in.putExtra("yourKey", yourValue);
startActivityForResult(in, REQUEST_CODE);
и в Деятельности B
Bundle b = getIntent().getExtras();
if (b != null) {
boolean value = getIntent().getBooleanExtra("yourKey", true);
}