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

Fragment에서 홈키로 나갔다 들왔을때 앱종료현상 문의

0 추천

DB에서 데이터를 가져와서 Button을 add 하여 뿌려주는 Fragment 화면 입니다

여기서 home 키를 눌러 나갔다고 몇분 있다가 다시 앱을 실행시키면 아래 에러를 뿜고 앱이 종료됩니다.

아주잠깐 홈키눌렀다 다시 들오면 DB 를 다시 타서 데이터를 재 로딩하구요,,

그냥 홈누르기 직전 상태 그대로 보존되는 방법을 알수있을까요??

10-30 14:56:40.980: E/AndroidRuntime(10833): FATAL EXCEPTION: main
10-30 14:56:40.980: E/AndroidRuntime(10833): java.lang.NullPointerException
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.view.ViewConfiguration.get(ViewConfiguration.java:262)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.view.View.<init>(View.java:2380)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.view.View.<init>(View.java:2423)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.widget.TextView.<init>(TextView.java:468)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.widget.Button.<init>(Button.java:108)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.widget.Button.<init>(Button.java:104)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.widget.Button.<init>(Button.java:100)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at com.test.ListLeftFragment.addButton(ListLeftFragment.java:203)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.os.AsyncTask.finish(AsyncTask.java:590)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.os.AsyncTask.access$600(AsyncTask.java:149)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:603)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.os.Looper.loop(Looper.java:132)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at android.app.ActivityThread.main(ActivityThread.java:4028)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at java.lang.reflect.Method.invokeNative(Native Method)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at java.lang.reflect.Method.invoke(Method.java:491)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
10-30 14:56:40.980: E/AndroidRuntime(10833):  at dalvik.system.NativeStart.main(Native Method)
10-30 14:56:40.980: W/ActivityManager(296):   Force finishing activity com.sem.semcs/.PatrolCheckListActivity
10-30 14:56:41.000: E/android.os.Debug(296): Dumpstate > /data/log/dumpstate_app_error

 

익명사용자 님이 2013년 10월 30일 질문

1개의 답변

0 추천
 
채택된 답변

안녕하세요.

저도 이것 때문에 며칠 고생하다가 방금..해결했네요.ㅠㅠㅠ

원인은 오랫동안 또는 다른 앱을 사용하면서 해당 앱의 자원을 메모리에서 모두 해제하기 때문입니다. 스태틱 변수의 값이 모두 없어지죠...

onSaveInstanceState 함수는 홈버튼을 누를때 자동으로 불려짐니다.

Fragment를 제어하는 파일에서 

@Override

public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("aaa",  현재프래그먼트);
}
이렇게 현재를 보내 놓구요.
 
Fragment를 제어하는 파일 처음에서
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
 
 if (savedInstanceState != null)
{
String aaaaa = savedInstanceState.getString("aaa","");
}
를 받아서 가운데 뷰 또는 필요한 뷰들을 다시 뿌려주면 됩니다.
 
맨처음 인트로화면에서 스태틱 변수를 하나 해놓고 그값이 초기화되면 메모리가 해제 된것이므로 그때 위와 같은 방법으로 처리를 하면 될꺼에요...전 무려 3일을 해맸네요..
그럼 수고하세요! 
 
익명사용자 님이 2013년 10월 30일 답변
답변이 늦었네요,, 감사합니다 적용시켜 볼꼐요 ^^
...