2011-01-21 11 views
1

まず、私はこれで全く新しいです。ほとんどの場合、インターネットで自分がしたいことをやり遂げる方法を見つけて、それをどのように使うかを考えています。アクティビティを開始する2つの方法の違いは何ですか?

私はこの2つのバージョンのアクティビティを開始する方法を見つけましたが、実際には違いはわかりません。他のものよりも優れていますか?あるいは、異なる状況で使用すべきか?あるいは、彼らは同じことをする2つの異なる方法ですか?

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); 

     } 
    }); 

またはこの1

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)バージョンを呼び出しを識別する2番目の整数パラメータで呼び出します。結果は、あなたのonActivityResult(int、int、Intent)メソッドを介して返されます。

新しいアクティビティで何かが返されないようにしたい場合や、終了時を知る必要がある場合を除き、startActivity()は問題ありません。

参照: http://developer.android.com/reference/android/app/Activity.html

+0

すばらしい、ありがとう!だから、私は2番目のものを使用します。これは、とにかく私にとって最も理にかなったものです。 – KarenElissa

0

startIntentForResult(テント、RequestCode)を使用してはも極めて有用です。呼び出されたインテントは、次いで、これは

@Override 保護ボイド (INT request_code、INT RESULT_CODE、意図I) {

super.onActivityResult(request_code, result_code, i); 

}

結果コードonActivityResult呼ばれる閉じたときインテントがキャンセルされたか、正常に完了したかどうかを確認できます。また、あなたはユニークなリクエストコードを指定する主な活動から、いくつかのインテントを呼び出している場合は、あなたが意図する目的に独自の意思の結果を処理できるようになるなど

startIntentForResult(Intent1,1)

...

startIntentForResultは、 (Intent2,2)

...

startIntentForResult(Intent3,3)

...onActivityReslutに続い

@Override 保護ボイド (INT request_code、INT 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をonActivityResult

は非常に非常に有用です。

関連する問題