2009-11-25 9 views
1

두 개체 사이에 개체 배열을 전달해야하는 두 가지 작업이 있습니다. 주요 활동에서 보조 활동을 startActivityForResult()으로 시작하고 배열을 ParcelableArray로 번들로 전달합니다. 배열을 보조 활동으로 가져 오면 정상적으로 작동합니다. 배열을 배열에서 꺼내서 거기에서 조작 할 수 있습니다.Android 활동 결과

내가 아는 문제는 배열을 호출 활동으로 다시 전달하려는 경우입니다. 사용자가 장치의 뒤로/돌아 가기 단추를 누를 때 발생해야합니다. 배열을 보조 도구에서 onPause() 내에서 setResult()을 호출하여 배열에 다시 넣으려고했지만이 작업을 수행하기에 잘못된 위치라고 가정합니다. 그 결론에 도달했습니다 getCallingActivity() 이내 onPause() null을 반환합니다.

이 상황에서 전화 활동으로 번들을 반환하는 적절한 방법은 무엇입니까?

주요 활동 :

Bundle b = new Bundle(); 
    b.putParcelableArray("com.whatever.data", items); 

    Intent folderView = new Intent(MainView.this, FolderView.class); 
    folderView.putExtras(b); 
    startActivityForResult(folderView, 1); 

차 활동 :

protected void onPause() { 
    super.onPause(); 

    Intent result = new Intent(); 

    Bundle b = new Bundle(); 
    b.putParcelableArray("com.whatever.data", items); 

    result.putExtras(b); 

    setResult(Activity.RESULT_OK, result); 
} 

답변

2

IIRC, 나는 onKeyDown()을 구부리고 KeyEvent.BUTTON_BACK을 지켜보고 setResult()이라고 불렀습니다. Android 2.0에서는 대신 onBackPressed()을 연결합니다. (활동을 사용할 때 자주 사용하는 하나)

+0

...라고 보장 할 수 없습니다 마무리() 방법이다. 감사! – harrywynn

-1

가 대신 onPause의들의 OnDestroy 시도? 또는 배열이 업데이트 될 때마다 두 번째 활동에서 setResult를 반복적으로 호출 할 수 있습니다. 두 번째 활동이 실제로 완료 될 때까지 결과가 전달되지 않으므로 반복적으로 setResult를 호출 할 수 있습니다.

아마도 그 중 하나보다 더 나은 해결책이있을 수 있습니다.하지만 그 점이 마음에 들었습니다.

+0

들의 OnDestroy()가'트릭했다 onKeyDown에'의 처리를하는 –