2011-08-12 8 views
2

Android startActivityForResultを使用している場合、私はIntentで返されるものについては何も保証しません。onActivityResultによって返されます。Androidインテントのインターフェイスを定義する

Activityから別のものにデータを送信するときにエラーの可能性を制限するために、ある種のインターフェイスを定義したいと思います(誤った変数名など)。

これを行う方法はありますか?たとえば、私はAndroid Interface Definition Languageと似たようなものを使うことができますが、Activityの間に何かを使うことができますか?

答えて

2

2つのアクティビティA、Bの間でデータを渡すときに2つのシナリオがあります。

  1. アクティビティAは、
  2. アクティビティBは、それが私が示唆している両方の場合にsetResult

を使用して終了したときに、アクティビティAにデータを返すことを望む(意図startActivity介して)アクティビティBにデータを渡したいです余分な鍵を使用するためのパブリック静的最終変数をいくつか作成します。あなたがAからBにキー「格付け」を使用して整数を渡す必要がある場合

は、例えば、私はおそらく

class A extends Activity { 
    public static final String RESULT_STATUS = "RESULT_STATUS"; 
    // Whatever .... 
    public void startB(int rating) { 
     Intent toStart = new Intent(this, B.class); 
     toStart.putExtra(B.EXTRA_RATING, rating); 
     startActivityForResult(toStart, 0); 
    } 

    public void onActivityResult(int requestCode /* 0 in our case */, int resultCode, Intent data) { 
      if (resultCode == RESULT_OK) { 
        String returnedStatus = data.getStringExtra(RESULT_STATUS); 
        // Whatever .... 
      } 

} 

class B extends Activity { 
    public static final String EXTRA_RATING = "EXTRA_RATING"; 
    public void onCreate(Bundle b) { 
     // Whatever .... 
     int rating = getIntent().getIntExtra(EXTRA_RATING,0); 
    } 

    // Whatever .... 

    public void returnDataAndFinish(String status) { 
     Intent result = new Intent(); 
     result.putExtra(A.RESULT_STATUS, status); 
     setResult(RESULT_OK, result); 
     finish(); 
    } 
} 
を行うだろう
関連する問題