프로그래밍과 잡담

안드로이드 인텐트.. 본문

프로그래밍/안드로이드

안드로이드 인텐트..

크레온 2010. 12. 21. 17:29

인텐트를 이용해서

데이터를 주고 받는법
Intent intent = new Intent(this, TestClass.class);
String var1="test"
intent.putExtra("var1",var1);

startActivityForResult(intent,1);


위와 같은 식으로 인텐트를 사용하면 

불려진 클래스에서 

저 var1을 받을 수 있다.


받는 방법은


....

String test = getIntent().getStringExtra("var1");

Log.i("test",test);

....



이런식으로 사용하면 된다.


엑티비티를 불른 클래스에서 불려진 클래스에서 값을 받을 려면

말이 좀 그런데

A를 원래 클래스
B를 불려진 클래스

라 하자.


A에서 인텐트를 이용하여 B를 불렀다.

B에서 뭔짓을 한 다음에 

A한테 값을 보내 싶은거다. 

그걸 처리하기 위해서는 




처음에 부를때는 이런식일 것이다..
...

Intent intent = new Intent(this, B.class);

startActivityForResult(intent,1);

...

불려진 클래스 B에서는 

이런 코드가 있을것이다.


.....

...

Intent intent = getIntent();

String data = "test";

intent.putExtra("data",data);

setResult(RESULT_OK, intent);

finish();

...



그리고 
A클래스에서는 이 메소드를 오버라이딩을 한다.

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if( resultCode == RESULT_OK )
    {
         if( requestCode == 1)
        {
                String data = intent.getStringExtra("data");
                ....
        }
    }
}

결론

데이터를 보낼때는 

Intent의  putExtra(String ,  Object ) 를 통해서 보내고

Intent.get[...]Extra(String)으로 값을 받는다.



인텐트 에러시..

 ERROR/AndroidRuntime(18852): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=null} to activity {페키지명.클래스이름}: java.lang.NullPointerException

이 문제는 거의

setResult(RESULT_OK);   이렇게 해서 일어나는거다.

반드시 이렇게 해야한다..
setResult(RESULT_OK, intent);
반응형
Comments