В чем разница между этими двумя способами начать деятельность?

1

Во-первых, я совершенно новичок во всем этом, и в основном я изучаю поиск в Интернете для инструкций о том, как делать то, что я хочу, а затем выяснять, как его использовать.

Итак, я нашел эти две версии того, как начать работу, но я не очень понимаю разницу. Лучше другого? Или они должны использоваться в разных обстоятельствах? Или это просто два разных способа сделать одно и то же?

Button home = (Button) findViewById(R.id.to_home);
    home.setOnClickListener (new View.OnClickListener() {
        public void onClick(View view) {
            Intent i = new Intent(view.getContext(), Home.class);
                startActivityForResult (i, 0);

        }
    });

или этот

Button button = (Button)findViewById(R.id.b_cup);
    button.setOnClickListener (new View.OnClickListener() {
        public void onClick (View view) {
            Intent i = new Intent (Home.this, Cup.class);
            startActivity (i);

        }
    });
  • 0
    Краткий ответ. Нет.
Теги:

2 ответа

7

Иногда вы хотите получить результат от действия, когда оно закончится. Например, вы можете начать действие, которое позволяет пользователю выбрать человека в списке контактов; Когда он заканчивается, он возвращает человека, который был выбран. Для этого вы вызываете версию startActivityForResult (Intent, int) со вторым целочисленным параметром, идентифицирующим вызов. Результат вернется через ваш метод onActivityResult (int, int, Intent).

Если вы не хотите, чтобы новая активность возвращала что-то или вам нужно было знать, когда она закончится, startActivity() будет в порядке.

См: http://developer.android.com/reference/android/app/Activity.html

  • 0
    Большое спасибо! Поэтому я воспользуюсь вторым, и это хорошо, потому что он все равно имеет для меня смысл.
0

Использование startIntentForResult (Intent, RequestCode) чрезвычайно полезно. когда наложенное намерение закрывается, это называется

@Override protected void onActivityResult (int request_code, int result_code, Intent i) {

super.onActivityResult( request_code, result_code, i );

}

Затем код результата можно использовать, чтобы узнать, было ли намерение отменено или успешно выполнено. Кроме того, если вы вызываете несколько Intents из основного действия, определяя уникальный код запроса, вы сможете обрабатывать целевые результаты, уникальные для целей намерений, например

startIntentForResult (Intent1,1)

...

startIntentForResult (Intent2,2)

...

startIntentForResult (Intent3,3)

...

Затем в onActivityReslut:

@Override protected void onActivityResult (int request_code, int result_code, Intent i) {

if (result_code == RESULT_OK){

    switch (request_code)
    {
    case 1:
        //Do Something
        break;
    case 2:
        //Do Something
        break;
    case 3:
        //Do Something
        break;
    default:
        //Unrecognised request_code
    }
}

super.onActivityResult( request_code, result_code, i );

}

startIntenetForResult очень полезен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню