안드로이드 개발 질문/답변
(글 수 45,052)
Activity 클래스에서 다른 클래스를 불러와서
그 다른 클래스에서 아래와 같이 Activity를 실행하면
startActivity(intent);
java.lang.nullpointerexception 에러가 나는데...
Activity 실행은 현재 Acrivity에서 밖에 안되나요?
intent 생성시 부모의 context를 넘겨 주었는데요. 위와 같이 에러가 나네요.
혹시 아시는 분 계시면 조언 부탁드립니다.
그 다른 클래스에서 아래와 같이 Activity를 실행하면
startActivity(intent);
java.lang.nullpointerexception 에러가 나는데...
Activity 실행은 현재 Acrivity에서 밖에 안되나요?
intent 생성시 부모의 context를 넘겨 주었는데요. 위와 같이 에러가 나네요.
혹시 아시는 분 계시면 조언 부탁드립니다.
2010.02.24 11:01:25
추가로 자세히 상황을 말씀드리면 현재 View 부분과 Module처리 부분을 나눠서
View 부분이 다른 클래스로 나눠져 있는 상태 입니다.
그래서 Button이 다른 클래스에 선언이 되어 있습니다.
그런데 거기서 Activity를 호출하면 아래와 같이 애러가 나는 군요.
btn_MapView.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v) {
intent = new Intent(context, GoogleMapView.class); context는 상위 Activity클래스의 Context
startActivity(intent);
}
});
View 부분이 다른 클래스로 나눠져 있는 상태 입니다.
그래서 Button이 다른 클래스에 선언이 되어 있습니다.
그런데 거기서 Activity를 호출하면 아래와 같이 애러가 나는 군요.
btn_MapView.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v) {
intent = new Intent(context, GoogleMapView.class); context는 상위 Activity클래스의 Context
startActivity(intent);
}
});
2010.02.24 11:36:04
훔....nullpointerexception 이 정확히 어디서 나는지는 잘 모르겠네요 ㅡㅡ;
현재 button을 다루는 class가 activity 인가요?
상위 context를 쓰셨다니... activity가 아닌가 싶기두 하고 ㅡㅡ;
intent = new Intent(context, GoogleMapView.class); context는 상위 Activity클래스의 Context
startActivity(intent);
context를 상위 Activity 것을 쓰셨다면... startActivity method도 상위것을 써 보시면 어떨런지 ㅡㅡ;
저도 이런 경우는 처음이라 ㅎㅎ 잘 모르겠네요...
context.startActivity( intent ); 한번 해 보셔요~
현재 button을 다루는 class가 activity 인가요?
상위 context를 쓰셨다니... activity가 아닌가 싶기두 하고 ㅡㅡ;
intent = new Intent(context, GoogleMapView.class); context는 상위 Activity클래스의 Context
startActivity(intent);
context를 상위 Activity 것을 쓰셨다면... startActivity method도 상위것을 써 보시면 어떨런지 ㅡㅡ;
저도 이런 경우는 처음이라 ㅎㅎ 잘 모르겠네요...
context.startActivity( intent ); 한번 해 보셔요~
2010.02.24 11:48:49
에러나는곳은 하위 Class구요 activity는 아닙니다. ^^;
^^; 네 감사합니다. 해봤는데 결과는 에러가 나네요
02-24 11:45:03.079: ERROR/AndroidRuntime(3122): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
친절하게 log에서 반문까지 해주네요 ^^;
^^; 네 감사합니다. 해봤는데 결과는 에러가 나네요
02-24 11:45:03.079: ERROR/AndroidRuntime(3122): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
친절하게 log에서 반문까지 해주네요 ^^;
2010.02.24 11:53:33
아 아니요..
public void onClick(View v) {
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);
parentContext.startActivity(intent);
}
이렇게 다시 실행했는데... ㅠ.ㅠ 여전히 널포인터 익셉션이네요...휴... 왜그러지..
public void onClick(View v) {
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);
parentContext.startActivity(intent);
}
이렇게 다시 실행했는데... ㅠ.ㅠ 여전히 널포인터 익셉션이네요...휴... 왜그러지..
2010.02.24 12:11:06
이렇게 해 보셔요~~~
setFlags() 말구요~~~
intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); 요걸루 해보셔요~~ ㅋㅋ 될.것.같.네.요.!!
2010.02.24 12:29:42
얼마전에 저도 겪었던 문제네요.
하지만 상위 Activity의 context를 통해서 다른 Activity 실행하는 것이 가능합니다.
문제는 이럴 경우 startActivity 만 가능하고 startActivityForResult가 불가능하기 때문에
상당히 제약이 많더군요.
2010.02.24 14:33:27
자식 클래스에서 부모 엑티비티 클레스로 새로운 엑티비티를 실행하게 하세요.
엑티비티 콘텍스트가 아닌 경우 pendingintent로 실행하기도 하더군요~~
엑티비티 콘텍스트가 아닌 경우 pendingintent로 실행하기도 하더군요~~
2010.02.24 14:34:18
(추천:
1 / 0)
아, 해결방법은 위에 다들 잘 설명해 주셔서 안적었는데요,
제가 사용했던 코드는 아래와 같습니다.
//전역변수 선언
Context mContext;
//생성자
mContext = context;
btn_MapView.setOnClickListener(new Button.OnClickListener()
{
Intent intentStartStation = new Intent( mContext,
Dialog_Activity.class );
intentStartStation.putExtra("stationName", "구로디지털단지");
mContext.startActivity(intentStartStation);
}
생성자에서 상위 Activity의 Context를 변수에 담아놓고 그걸로 startActivity 하면 됩니다.
유의하실 점은 위에 말씀드린대로 startActivityForResult가 불가능하기때문에 이것이 필요하다면
차라리 구조를 다시 짜시는 것이 현명하실거라 생각됩니다.
성공하세요~
2010.02.24 19:00:19
nullpointer는 해당 변수가 null일 때 나는거 아니였나요??
보여주신 부분에서는 null이 날 만한게 없어 보이는데요..;;; null이 나기전에 이클립스에서 빨간줄이 가지 않을까 싶네요..
exception이 발생한 line을 다시한번 잘 찾아 보심이 좋을 거 같아요..