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()

相关问题