마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

다른 클래스간에 static 변수 사용

0 추천
--------------1.java -----------

public static String sss;

 public void onCreate(){

...........

sss= .....;

}

 

-----------------------2.java

 

improt static ........1.sss;

 

이렇게 하면 1.java에서 sss값을 그대로 불러와서 2.java에서 쓸수 있는거 맞나요?

 

로그 찍어보니까 1.java에서는 찍히는데 2.java에서는 null값들어갔다고 나오면서 에러 떠버리네요....

(1.java는 액티비티고 2.java는 서비스 파일입니다)
이석호 (770 포인트) 님이 2014년 3월 7일 질문

3개의 답변

+2 추천
 
채택된 답변
당연히 null 일수 있습니다.

sss는 static으로 잡혀서 이미 메모리를 차지 하고 있습니다.

 

1.java의 onCreate 메소드에서 sss에 객체를 할당하는데

이 부분이 불려지지 않은 상태라면 sss는 null이 되겠죠.

 

sss 싱글턴 패턴으로 만드셔서 사용하세요.
원조안드로이드 (58,190 포인트) 님이 2014년 3월 7일 답변
이석호님이 2014년 3월 7일 채택됨
님이 말씀하신대로 onCreate 부분에서 할당하는데 그부분이 다른 클래스에서 호출할때 안불러지는거 같네여 싱글턴ㅇ,ㅡ로 한번 해봐야겠어욤.. ㅠ
+1 추천
안드로이드에서 static 변수를 사용하여 데이터를 주고 받는 것은 매우 안좋은 방법입니다.
activity life cycle에 따라 저장해 놓은 변수가 초기화되는 경우가 생깁니다.
익명사용자 님이 2014년 3월 7일 답변
ㅠ... 일단 해결은 했는데 다음부터 이방법 쓰면 안될거 같아요 ㅠㅠ
0 추천
같은 패키지안에 A 클래스와 B 클래스가 있고

A 클래스의 전역변수로 다음과 같이 선언했을 때,

public static String sss;

B 클래스에서는 A.sss 로 사용하시면 됩니다.  ( 클래스명.변수명 )
초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 7일 답변
그렇게 해서 로그 찍엇는데 널값 받더라구요 ㅠㅠ..
응? 선언후에 값을 안넣으신건 아니구여?
1.java 에서는 로그 찍으면 넣은값나오는데 2.java에서는 로그 찍으면 널익셉션 떠요 ㅠ.ㅠ.
...