2010-06-29 5 views
0

내 Android 앱에서 startActivityForResult()으로 새로운 활동을 시작합니다. 나는 onActivityResult()의 결과를 완벽하게 얻습니다. 내 문제는 활동을 시작하기 전에 내가 알고있는 작은 데이터가 있으며 그 값을 onActivityResult()에서 사용할 수 있어야한다는 것입니다. 추가로 내 의도에 첨부하려고했지만 액티비티가 결과를 반환 할 때 사용할 수있는 의도에 첨부되지 않았습니다. 데이터를 전역 변수에 저장하여 작동하도록 만들었지 만, 나는 그 접근법을 정말로 좋아하지 않습니다. 활동을 통해 데이터를 전달하는 더 나은 방법이 있습니까?새 활동을 통해 데이터를 전달할 수 있습니까?

+0

이 문제가 계속되는 지 확실하지 않지만 저장해야하는 데이터의 양은 어느 정도입니까? 부가 아닌 int 인 경우, startActivityForResuilt의 requestCode로서 건네 줄 수가 있습니다. – sargas

+0

통과해야하는 값은 매우 작은 정수 (1 ~ 12)입니다. startActivityForResult()에 대한 호출을 위해 requestCode (MY_REQUEST * 100 + value)에 값을 삽입했습니다. 그런 다음 onActivityResult()에서 두 부분을 다시 가져올 수 있습니다. 그것은 작동하는 것 같습니다. 감사. –

+0

sargas, 여기서 정확한 답변을 표시하고 싶지만, 최종 답변은 원래 질문에 대한 의견입니다. 그래서 여러 번 질문에 대답 할 수 있습니까? 요청 코드를 사용하여 회신하여 내가 그것을 표시하고 공식 답변으로 만들 수있는 답변을 게시 할 수 있습니까? 감사. –

답변

1

의견에 제안 된대로 데이터를 보내는 방법으로 requestCode를 사용하는 것은 나에게 해킹하는 것처럼 보입니다. 이것은 해당 코드의 의도 된 사용이 아니며, 일반적으로 이러한 방식으로 물건을 사용하면 나중에 문제가 발생할 수 있습니다.

클래스에 정수를 정의하고 저장하지 않는 이유는 무엇입니까? 의사 코드 :

class YourAcrivity extends Activity{ 
    private int yourInt; 

    private function yourFunction(){ 
     //set your int 
     yourInt = 11; 
     //call your activity 
     //startActivityForResult(); 
    } 

    function onActivityResult(){ 
    //use yourInt 
    } 





} 
+0

맞습니다.이 방법은 요청 코드 값에 이상한 일을 할 필요가 없으므로 가장 깨끗합니다. 나는 당신의 함수()에 필요한 값을 설정하고 onActivityResult()를 읽은 후에이 접근법을 피하기를 바랬다. 이 두 가지 기능 외에는 전혀 의미가 없습니다. 클래스의 나머지 함수가 사용하지 않을 클래스 변수를 유지하고 싶지 않았습니다. 다른 옵션이 없다면, 나는 이것을 미래에 처리 할 방법입니다. 감사. –

0

setResult(int,Intent)을 사용하면 onActivityResult()에 데이터를 다시 보내고 주어진 의도와 동일한 값으로 전달할 수 있습니다 (action이나 uri와 같은 속성 중 일부는 쓸모가 없습니다).

두 활동 사이에 데이터를 구축하는 데 사용할 수 있습니다. 하나는 알고있는 정보를 제공하고 나머지는 나머지 부분에 저장하고 호출시 반환합니다.

+0

내가 호출하는 활동은 표준 안드로이드 활동입니다 (사용자가 연락처를 볼 수 있도록 연락처 목록을 보여줍니다). 내가 만들지 않은 활동으로 이것을 할 수있는 방법이 있습니까? –

+0

@Daedylus, Ofcourse! :) sargas 언급하는 것과 같은 방법입니다 :) – st0le

+0

내 코드에서 setResult() 호출해야합니까? 내가 만든 액티비티에 setResult()를 사용하는 방법을 알고 있다고 생각하지만, 쓰지 않은 액티비티에는 어떻게해야합니까? –

관련 문제