2011-01-21 132 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

簡短的回答。號碼 – 2011-01-21 19:43:47

回答

7

有時你希望得到一個結果,從一個活動回來何時結束。例如,您可以開始一項活動,讓用戶在聯繫人列表中選擇一個人;當它結束時,它返回被選中的人。爲此,可以使用第二個整數參數來調用startActivityForResult(Intent,int)版本來標識調用。結果將通過onActivityResult(int,int,Intent)方法返回。

除非您希望新的活動返回某些內容,或者您​​需要知道何時完成,否則startActivity()將會很好。

參見: http://developer.android.com/reference/android/app/Activity.html

+0

太好了,謝謝!所以我會用第二個,這很好,因爲它對我來說是最有意義的。 – KarenElissa 2011-01-21 19:43:12

0

使用startIntentForResult(意向,RequestCode)是非常有用的,但。當已經稱爲意圖然後關閉這稱爲

@Override 保護無效onActivityResult (INT request_code,INT RESULT_CODE,意圖ⅰ) {

super.onActivityResult(request_code, result_code, i); 

}

結果代碼然後可以用來查看意圖是否被取消或成功完成。此外,如果你調用從主活動指定一個唯一的請求代碼的幾個意圖將讓你處理獨有的意圖目的,如

startIntentForResult(Intent1,1)

意圖結果...

startIntentForResult (Intent2,2)

...

startIntentForResult(Intent3,3)

...

然後在onActivityReslut:

@Override 保護無效onActivityResult (INT request_code,INT RESULT_CODE,意圖ⅰ) {

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是非常非常有用的。

相關問題