2011-08-12 5 views
2

Android startActivityForResult을 사용하는 경우 에 의해 반환되는 Intent에서 얻을 수있는 것에 대해 어떠한 보증도하지 않습니다.Android 인 텐트 용 인터페이스 정의

Activity에서 다른 유형으로 데이터를 전송할 때 오류의 가능성을 제한하기 위해 어떤 종류의 인터페이스를 정의하고자합니다 (예 : 잘못 입력 된 변수 이름).

할 방법이 있습니까? 예를 들어 Android Interface Definition Language과 비슷하지만 Activity 사이에 사용할 수 있습니까?

답변

2

두 가지 작업 A, B간에 데이터를 전달할 때 두 가지 시나리오가 있습니다.

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