Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Объясните следующую конструкцию

#java #android #методы #android_intent


public class CheatActivity extends Activity {
    ...
    private boolean mAnswerIsTrue;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cheat);
        mAnswerIsTrue = getIntent().getBooleanExtra(EXTRA_ANSWER_IS_TRUE, false);
    }
}


а именно часть:

mAnswerIsTrue = getIntent().getBooleanExtra(EXTRA_ANSWER_IS_TRUE, false);

    


Ответы

Ответ 1



Activity можно стартануть через интент. К примеру: Intent intent = new Intent(FirstActivity.this, CheatActivity.class); intent.putExtra(EXTRA_ANSWER_IS_TRUE, message); startActivity(intent); и метод getIntent() возвращает вам интент, которым была запущена данная активити. Далее из интента достается булевая переменная по ключу EXTRA_ANSWER_IS_TRUE Лучше всего вам объяснит официальная документация

Ответ 2



Немного теории: Intent - абстрактное описание выполняемой операции. Intent часто в сети описывают как намерение, для выполнения операции. И это описание довольно удачно из-за того, что Intent мб явным и неявным. Основные использование: В startActivity для запуска Activity. В broadcastIntent для отправки его любым заинтересованным компонентам BroadcastReceiver. В startService (Intent) или в bindService (Intent, ServiceConnection, int) для связи с фоновым сервисом. Наиболее значимое использование - это начало деятельности, где ее можно рассматривать как связь между действиями. Это в основном пассивная структура данных, содержащая абстрактное описание действия, которое необходимо выполнить. Итог: Intent это сущность, которая позволяет связать компоненты приложений, имеет возможность управлять ими и при этом может передать данные между компонентами, что у вас в примере и происходит. Ответ: Стартуем: Intent intent = new Intent(this, CheatActivity.class); intent.putExtra(EXTRA_ANSWER_IS_TRUE, mAnswerIsTrue); startActivity(intent); Намерение запустить с текущего класса -> CheatActivity. Положить в намерение intent (Bundle) по ключу EXTRA_ANSWER_IS_TRUE (String) значение mAnswerIsTrue(boolean). Получаем: mAnswerIsTrue = getIntent().getBooleanExtra(EXTRA_ANSWER_IS_TRUE, false); Мы пытаемся получить переменную mAnswerIsTrue(bool). Для этого мы получаем intent командой getIntent, достаем из intent(Bundle) командой getBooleanExtra бул переменную, в случае если ключ EXTRA_ANSWER_IS_TRUE не существует, то ставим ей дефолтное значение false.

Комментариев нет:

Отправить комментарий