Дизайн андроид активности - PullRequest
2 голосов
/ 27 июня 2010

Алиса должна ответить на три вопроса. После того, как она ответила на вопросы, она получает диалоговое окно со списком вопросов и ответов и кнопкой для сохранения ответов в базе данных.

На данный момент я считаю, что в дизайне должно быть три класса: Master, Question, Summary.

Мастер вызывает Вопрос с намерением, включающим текст вопроса вопроса 1. После того, как Алиса вводит свой ответ, Вопрос возвращает ответ мастеру через намерение.

Повторите два раза.

Затем Мастер выполняет обработку вопросов и вызывает Сводку через намерение.

Рекомендуется ли такой дизайн в Android? Возможно ли иметь такое мастерское задание? Если это так, как я могу позволить действующему основному действию прослушивать намерения?

1 Ответ

2 голосов
/ 27 июня 2010

То, что вы ищете, это startActivityForResult

Возврат результата с экрана

Окно может вернуть результат после его закрытия. Этот результат будет передан обратно в вызывающий метод onActivityResult (), который может предоставить Intent, содержащий произвольные данные, вместе с кодом запроса, переданным startActivityForResult (). Обратите внимание, что вы должны вызвать метод startActivityForResult (), который принимает параметр кода запроса, чтобы получить этот обратный вызов. Следующий код демонстрирует открытие нового экрана и получение результата.

// Open the new screen.
public void onClick(View v){
    // Start the activity whose result we want to retrieve.  The
    // result will come back with request code GET_CODE.
    Intent intent = new Intent(this, com.example.app.ChooseYourBoxer.class);
    startActivityForResult(intent, CHOOSE_FIGHTER);
}

// Listen for results.
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    // See which child activity is calling us back.
    switch (resultCode) {
        case CHOOSE_FIGHTER:
            // This is the standard resultCode that is sent back if the
            // activity crashed or didn't doesn't supply an explicit result.
            if (resultCode == RESULT_CANCELED){
                myMessageboxFunction("Fight cancelled");
            } 
            else {
                myFightFunction(data);
            }
        default:
            break;
    }
}



// Class SentResult
// Temporary screen to let the user choose something.
    private OnClickListener mLincolnListener = new OnClickListener(){
        public void onClick(View v) {
            Bundle stats = new Bundle();
            stats.putString("height","6\'4\""); 
            stats.putString("weight", "190 lbs");
            stats.putString("reach", "74\"");
            setResult(RESULT_OK, "Lincoln", stats);
            finish();
        }
    };

    private OnClickListener mWashingtonListener = new OnClickListener() {
        public void onClick(View v){
            Bundle stats = new Bundle();
            stats.putString("height","6\'2\""); 
            stats.putString("weight", "190 lbs");
            stats.putString("reach", "73\"");
            setResult(RESULT_OK, "Washington", Bundle);
            finish();
        }
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...