2011-10-31 2 views
-2

안녕하세요, 아래 코드에 표시된 493 줄에 nullpointer가 표시됩니다. 누군가 해결할 수 있습니까? 나는 거의 100 % 체크 박스 (nieuwbel)임을 압니다. 하지만 예외를 없앨 수는 없습니다.Nullpointer with Checkbox.isChecked

미리 감사드립니다.

@Override  
protected void onPause() { 
    MyBeltegoed dialog = new MyBeltegoed (this, new OnReadyListenerBeltegoed()); 
    nieuwbel = (CheckBox)dialog.findViewById(R.id.nieuwbel); 
    Editor e = mPrefs.edit(); 
    e.putBoolean(PREF_BOOL, nieuwbel.isChecked()); <----- Nullpointer    
    e.commit();   
    Toast.makeText(this, "Settings Saved.", Toast.LENGTH_SHORT).show();   
    super.onPause();  
} 
+1

'isChecked()'가 항상 false가 될 것입니다. 둘째로 괴상한 중단 점을 넣고 null인지 확인하십시오. 'nieuwbel'이 null이고 디버깅을 할 때 직면 한 문제가 무엇인지 추정하지 마십시오. 게으른 질문을 망쳐 놓는 신경입니다. – Shahzeb

+0

nieuwbel의 값은 무엇입니까, PREF_BOOL 및 E ??? 다음 중 하나는 null입니까? –

+0

Hi Pedro Rainho가 이미 해결되었습니다. 감사합니다. onCreate에서 다음을 설정했습니다. MyBeltegoed 대화 상자 = new MyBeltegoed (this, new OnReadyListenerBeltegoed()); dialog.setContentView (R.layout.custom_dialog); nieuwbel = (CheckBox) dialog.findViewById (R.id.nieuwbel); – Lars

답변

1

내용보기를 올바르게 설정 했습니까? 기본 android R 클래스가 아니라 생성 된 R 클래스를 사용하고 있는지 확인하십시오.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

편집 :

당신은 너무 대화의 콘텐츠보기를 설정해야합니다.

@Override  
protected void onPause() { 
    MyBeltegoed dialog = new MyBeltegoed (this, new OnReadyListenerBeltegoed()); 

    dialog.setContentView(R.layout.custom_dialog); <-- add this 

    nieuwbel = (CheckBox)dialog.findViewById(R.id.nieuwbel); 
    Editor e = mPrefs.edit(); 
    e.putBoolean(PREF_BOOL, nieuwbel.isChecked());   
    e.commit();   
    Toast.makeText(this, "Settings Saved.", Toast.LENGTH_SHORT).show();   
    super.onPause();  
} 

custom_dialog은 nieuwbel을 포함하는 대화 상자입니다. (from http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog)

+0

안녕하세요 스테판, 예. – Lars

+0

대화 상자에서도? nieuwbel이 포함 된 뷰를로드해야합니다. – Stephan

+0

체크 상자 nieuwbel은 layout이라는 다른 xml 파일에 있습니다. 그래서 내가 setContentView (R.id.nieuwbel); onPause에서 괜찮을까요? – Lars

3

당신은 nieuwbel이 그것을 얻을 시도 후하지 null 있는지 확인해야합니다.

반환

이 시도 주어진 계층 구조의 ID 또는 널 (null)이 뷰 :

@Override  
protected void onPause() { 
    MyBeltegoed dialog = new MyBeltegoed (this, new OnReadyListenerBeltegoed()); 
    nieuwbel = (CheckBox)dialog.findViewById(R.id.nieuwbel); 
    if (nieuwbel != null) { 
     Editor e = mPrefs.edit(); 
     e.putBoolean(PREF_BOOL, nieuwbel.isChecked());    
     e.commit();   
     Toast.makeText(this, "Settings Saved.", Toast.LENGTH_SHORT).show(); 
    } else { 
     Toast.makeText(this, "Failed to save settings!", Toast.LENGTH_SHORT).show(); 
    } 
    super.onPause();  
} 

로그 캣이 forceclose을 findViewById()은 당신이 찾고있는 것을 발견되지 않을 수 있습니다

10-31 22:57:36.618: E/AndroidRuntime(1423): FATAL EXCEPTION: main 
10-31 22:57:36.618: E/AndroidRuntime(1423): android.app.SuperNotCalledException: Activity {com.sencide/com.sencide.AndroidLogin} did not call through to super.onPause() 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.app.Activity.performPause(Activity.java:3854) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1191) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2341) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2311) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2291) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.app.ActivityThread.access$1700(ActivityThread.java:117) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:942) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.os.Looper.loop(Looper.java:123) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at java.lang.reflect.Method.invoke(Method.java:507) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
10-31 22:57:36.618: E/AndroidRuntime(1423):  at dalvik.system.NativeStart.main(Native Method) 
+0

안녕하세요 ObscureRobot, 예 알아요.하지만 오류가 발생하는 곳을 모르겠습니다. 도와 주시겠습니까? 그냥 알려주시겠습니까? – Lars

+0

'onPause()'가 호출 될 때까지 R.id.nieuwbel에 적절한 ID가 포함되도록 논리를 추적해야합니다. – ObscureRobot

+0

좋아요, nullpointer가 없어졌지만 지금은 forceclose를 얻었습니다. 편집 된 코드를 참조하십시오. – Lars