2013-11-15 43 views
0

Settings.XML中:開關在彈出的窗口NullPointerException異常

..... 
<Switch 
    android:id="@+id/flmode" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_marginLeft="30dp" 
    android:layout_toRightOf="@+id/textView1" /> 

<Switch 
    android:id="@+id/fmode" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView2" 
    android:layout_marginLeft="30dp" 
    android:layout_toRightOf="@+id/textView2"/> 
..... 

來電彈出:

public void showPopup(View anchorView) { 

    View popupView = getLayoutInflater().inflate(R.layout.settings, null); 

    PopupWindow popupWindow = new PopupWindow(popupView, 
          LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

    Switch flmode = (Switch) findViewById(R.id.flmode); 

    flmode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ 

     } 
    });   

    Switch fmode = (Switch) findViewById(R.id.fmode); 
    fmode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ 
     } 
    }); 

    popupWindow.setFocusable(true); 

    popupWindow.setBackgroundDrawable(new ColorDrawable()); 

    int location[] = new int[2]; 

    anchorView.getLocationOnScreen(location); 

    popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, 
            location[0], location[1] + anchorView.getHeight()); 

} 

推出一個錯誤後:

11-15 09:26:08.302: E/AndroidRuntime(11433): FATAL EXCEPTION: main 
11-15 09:26:08.302: E/AndroidRuntime(11433): java.lang.NullPointerException 
11-15 09:26:08.302: E/AndroidRuntime(11433): at com.test.com.MainFirst.showPopup(MainFirst.java:507) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at com.test.com.MainFirst.onClick(MainFirst.java:242) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at android.view.View.performClick(View.java) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at android.view.View$PerformClick.run(View.java) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at android.os.Handler.handleCallback(Handler.java) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at android.os.Handler.dispatchMessage(Handler.java) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at android.os.Looper.loop(Looper.java) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at android.app.ActivityThread.main(ActivityThread.java) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at java.lang.reflect.Method.invokeNative(Native Method) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at java.lang.reflect.Method.invoke(Method.java:511) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) 
11-15 09:26:08.302: E/AndroidRuntime(11433): at dalvik.system.NativeStart.main(Native Method) 

什麼地方出了錯,以及如何執行它? 由於事先

回答

2

你需要做的

Switch flmode = (Switch) popupView.findViewById(R.id.flmode); 
Switch fmode = (Switch) popupView.findViewById(R.id.fmode); 

代替

Switch flmode = (Switch) findViewById(R.id.flmode); 
Switch fmode = (Switch) findViewById(R.id.fmode);  
+0

非常感謝你 – Forme

+0

歡迎您。如果有幫助,請接受答案。 – Apoorv

+0

幫助。我等了10分鐘才接受答案 – Forme

相關問題