1

我使用.xml視圖的onClick方法來捕獲我的.java類上的點擊事件。android:onClick =「」導致IllegalStateException

通常運行良好。但是,當我的活動是在後臺運行了很長時間,後來來到主線程和有人點擊返回以下異常的看法:

java.lang.NullPointerException 
java.lang.IllegalStateException: Could not execute method of the activity 
at android.view.View$1.onClick(View.java:3608) 
at android.view.View.performClick(View.java:4101) 
at android.view.View$PerformClick.run(View.java:17087) 
at android.os.Handler.handleCallback(Handler.java:615) 
at android.os.Handler.dispatchMessage(Handler.java:92) 

這裏我view.xml用:

<ToggleButton 
    android:id="@+id/fragment_main_colonies_tbFollow" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:checked="false" 
    android:onClick="onClickToggleColonyFollow" 
    android:textOff="@string/main_colony_follow" 
    android:textOn="@string/main_colony_follow" /> 

而且這裏是我的fragment.java:

public void onClickToggleColonyFollow(View view) { 
    ToggleButton near = (ToggleButton)getView().findViewById(R.id.fragment_main_colonies_tbNear); 
    ToggleButton follow = (ToggleButton) view; 

    if(follow == null || near == null) return; 

    if(!near.isChecked() && !follow.isChecked()) { 
     follow.setChecked(true); 
     return; 
    } 

    near.setChecked(false); 
    showColoniesNear = false; 
} 

我做錯了什麼?

+0

'ToggleButton near =(ToggleButton)getView()。findViewById(R.id.fragment_main_colonies_tbNear);'爲什麼getView? – Raghunandan

+0

@Raghunandan因爲它是一個片段。 – Karakuri

+0

然後'公共無效onClickToggleColonyFollow(視圖視圖)'必須在活動不片段 – Raghunandan

回答

0

當您使用屬性時,它會嘗試通過反射來查找該方法。我不清楚它究竟在哪裏嘗試這樣做,但它似乎並不是一直都在工作,也許它只是在視圖附加到的活動中尋找方法。我總是喜歡明確地設置onClickListener我自己view.setOnClickListener()

相關問題