android - 为自定义操作栏项目设置 onClick 事件

标签 android android-actionbar onclicklistener

当我尝试在自定义 ActionBar 的项目上添加 onClick 事件时,出现以下异常。当我在 ActionBar 中单击 searchiconactionbar 时,我的应用程序崩溃了。我已将方法 onClick() 放入 Activity 中只有。为什么我会收到此错误?是否有任何其他方法可以为自定义 ActionBar 项目设置 onClickListener?

java.lang.IllegalStateException: Could not find a method clickEvent(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.ImageView with id 'searchiconactionbar'
            at android.view.View$1.onClick(View.java:3838)
            at android.view.View.performClick(View.java:4466)
            at android.view.View$PerformClick.run(View.java:18542)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5086)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoSuchMethodException: clickEvent [class android.view.View]
            at java.lang.Class.getConstructorOrMethod(Class.java:472)
            at java.lang.Class.getMethod(Class.java:857)
            at android.view.View$1.onClick(View.java:3831)
            at android.view.View.performClick(View.java

actionbar_gip

<RelativeLayout
    android:layout_width="wrap_content"

    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="@color/tabbackground"

    xmlns:android="http://schemas.android.com/apk/res/android">

    <EditText
        android:id="@+id/actionsearchtext"
        android:layout_width="230dp"
        android:layout_height="wrap_content"
        android:textSize="15dp"
        android:textColor="#000000"
android:visibility="gone"
        android:maxLines="1"
        android:singleLine="true"

        android:padding="7dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:hint="Search for all GIFs"
        android:textColorHint="#544E4B"
        android:layout_toLeftOf="@+id/usericonlayout"
        android:background="@color/border_gray"
        />
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:id="@+id/usericonlayout"

        >
        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:id="@+id/searchiconactionbar"
            android:paddingLeft="4dp"
            android:paddingRight="4dp"
            android:layout_centerInParent="true"
            android:onClick="clickEvent"
            android:layout_marginLeft="5dp"
            android:src="@drawable/search"
            />
    </RelativeLayout>

</RelativeLayout>

代码-

        LayoutInflater mInflater2 = LayoutInflater.from(this);
        View mCustomView2 = mInflater.inflate(R.layout.actionbar_gip, null);
  searchtext=(EditText)mCustomView2.findViewById(R.id.actionsearchtext);
        searchIcon=(ImageView)mCustomView2.findViewById(R.id.searchiconactionbar);
          getSupportActionBar().setCustomView(R.layout.actionbar_gip);
   public void clickEvent(View v) {
        if (v.getId() == R.id.searchiconactionbar) {
            if (searchtext.getVisibility() == View.GONE)
                expand(searchtext);
            else
                collapse(searchtext);
        }

    }

最佳答案

替换

getSupportActionBar().setCustomView(R.layout.actionbar_gip);

通过

 getSupportActionBar().setCustomView(mCustomView2);

解决了我的问题..

关于android - 为自定义操作栏项目设置 onClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30036105/

相关文章:

Android 操作栏选项卡图标 png 尺寸

java - onclick 弹出窗口出现问题

android 将 OnClickListener 表单适配器移动到 ListFragment

Android OnClickListener 没有在第一次点击时触发

android - 保存图像并将所有图像复制到 SD 卡中

java - android ImageView 渐变背景

java - Android Retrofit 带有安全 header 的 Soap 请求信封

android - 动态添加所有apk的内部目录到AOSP系统镜像

android - 如何更改工具栏导航图标和选项菜单边距

Android ActionBar 模式 - 多个 Activity 或 fragment