单击ActionBar中的切换按钮时出现IllegalStateException

时间:2014-06-13 19:33:53

标签: android

我的应用在操作栏中有一个切换按钮。

我按照这里的说明操作,然后显示切换按钮: How to add a switch to android action bar?

我创建了一个新的Layout(toggle_layout.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ToggleButton
    android:id="@+id/actionbartoggle
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textOn="ON"
    android:textOff="OFF"
    android:onClick="onToggleClicked"/>
</RelativeLayout>

并使用上述说明中的项目修改了我的menu.xml。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/mytoggle"
        android:title=""
        android:showAsAction="always"
        android:actionLayout="@layout/toggle_layout" />   
</menu>

现在我正在尝试使用以下方法添加一个监听器: http://developer.android.com/guide/topics/ui/controls/togglebutton.html

根据Google的示例代码,我需要在Activity:

中添加此侦听器
public void onToggleClicked(View view) {
    // Is the toggle on?
    boolean on = ((ToggleButton) view).isChecked();
    if (on) {
        // Enable vibrate
    } else {
        // Disable vibrate
    }
}

我在此行之后将其放置在我的活动顶部附近:

public class MainActivity extends Activity implements ActionBar.TabListener {

应用程序运行,但是当我点击切换按钮时,我得到了这个:

06-13 12:17:22.663: E/AndroidRuntime(29436): java.lang.IllegalStateException: Could not find a  
method onToggleClicked(View) in the activity class android.view.ContextThemeWrapper for onClick 
handler on view class android.widget.ToggleButton with id 'actionbartoggle'

我做错了什么?

谢谢,我真的很感激!

1 个答案:

答案 0 :(得分:1)

你不能像在那里那样使用onclick:

通过执行以下操作在代码中附加click处理程序:    ToggleButton tb = findViewById(R.id.actionbartoggle);

tb.setOnClickListener(new OnClickListener() {

   @Override
   public void onCLick(View v) {
    // do stuff
   }
});

java.lang.illegalstateexception could not find a method (view) in the activity class android fragment