예를들면
class B extend Activity{
class A = new A();
A.method();
}
class A extend Activity{
method(){
...
}
}
이런 형식의 두 클래스가 있을때 A의 함수를 호출해서
B클래스에서 사용하고 싶은데
Nullpointerexception에러가 나더라구요
원인을 모르겠어요 일반 자바에서는 저런식으로 함수를 호출하면 되는데 둘다 액티비티 클래스라서 안되는건지 ㅠㅠ
위에 두분 답글을 보다가, 제가 지금까지 뭔가 잘못 생각했나 하고 한참 고민했습니다만..
B 액티비티에서 A 액티비티를 인스턴트로 생성해서 사용한다는 거 자체가 잘못된 것 같습니다.
기본적으로 A에 있는 메소드를 사용하기 위해서는 A의 Context를 받아와서,
Activity 기본 메소드가 아닌 이상 ((A) Context).xxxx 이런식으로 캐스팅해서 쓰셔야 합니다.
저는 이렇게 알고 있었는데, 위에 두분이 저리 말씀하시니 제가 잘못 알고 있었던 것 같기도 하고..
헷갈리네요.
두 개 클래스가 전부 액티비티여야할 이유를 잘모르겠지만, 사실 제가 위에 쓴 방법도 정상적인 방법이 아닙니다
한 액티비티에서 다른 액티비티의 context를 받아올려면 뭔가 다른 것을 거쳐야 하기 때문이죠.
정말로 2개 Activity에서 같은 함수를 공통으로 사용해야 한다면, Application Class를 구현하시는게 맞다고 봅니다.
public class Test extends Application
{
AAA 함수 구현
}
public class A extends Activity
{
private Test test;
@Override
public void onCreate(Bundle savedInstanceState) {
..중략
test = (Test)getApplicationContext( ) ;
test.AAA();
}
}
B Activity도 똑같이..
이런식이 좋지 않을까 생각되네요.
그냥 위에 걍 쓰다보니 오타도 있을것으로 생각되고 합니다.
자세한건 구글에서 Application Class 에 관해 검색해보시면 좋을 듯 하네요.




저기....
액티비티 클래스랑 아무런 관계가 없어요...
뭔가 코드를 잘못 짜신듯 싶네요...
에이 클래스 생성자는 잇으신거죠...?
에이 클래스 안 구현된 메소드는 리턴되는거죠...??
막 지역변수로 선언해놓고 그러신건 아닌거죠??
막 프로텍트로 선언해주신건 아니신거죠...?.....\\
액티비티 클래스라서 그렇다...는 절대 아니에요,,,-_-;;