2011-01-21 2 views
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

Короткий ответ. № –

ответ

7

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

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

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

+0

Отлично, спасибо! Поэтому я буду использовать второй, это хорошая причина, потому что это тот самый, который мне больше всего подходит. – KarenElissa

0

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

@Override защищен недействительным onActivityResult (INT request_code, внутр result_code, Намерение I) {

super.onActivityResult(request_code, result_code, i); 

}

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

startIntentForResult (Intent1,1)

...

startIntentForResult (Intent2,2)

...

startIntentForResult (Intent3,3)

...

Тогда в onActivityReslut:

@Override защищен недействительным onActivityResult (INT request_code, внутр result_code, Намерение 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 очень и очень полезно.

Смежные вопросы