如何在ImageButton中设置onClick事件?

5
我已经在安卓上创建了一个图像按钮,但当我点击该按钮时没有任何反应。我设置了所有属性,但仍然没有反应。请问您能否帮助我找出问题所在。 XML文件
    <?xml version="1.0" encoding="utf-8"?>
    <AbsoluteLayout
        android:id="@+id/widget39"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android">

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_x="0dp"
        android:layout_y="3dp" />

    <ImageButton
        android:id="@+id/search"
        android:layout_width="40dp"
        android:layout_height="41dp"
        android:layout_x="312dp"
        android:layout_y="10dp"
        android:clickable="true"
        android:onClick="onClick"
        android:background="@drawable/search" />

    />
    </AbsoluteLayout>

search.java

public class SearchData extends Activity {
ImageButton search; 

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_data);
        search =(ImageButton)findViewById(R.id.search);
        search.setOnClickListener(new View.OnClickListener()   {             
               public void onClick(View v)  {               
                try {
                    ConnectService();
                } catch (Exception e) {
                    e.printStackTrace();                    
                }               
               }  
             });
    }

你有进展了吗?我修改了我的答案。 - Adrian Cid Almaguer
5个回答

5
<ImageButton
        android:id="@+id/search"
        android:layout_width="40dp"
        android:layout_height="41dp"
        android:layout_x="312dp"
        android:layout_y="10dp"
        android:clickable="true"
        android:onClick="onClick"
        android:background="@drawable/search" />

根据你的xml,你应该从Image button Xml中删除android:onClick="onClick"这一行。这样它就能正常工作了,因为优先级总是会去执行你在xml中提到的onClick方法。

3
在XML文件(例如activity_main.xml)中
<ImageButton
android:id="@+id/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/home"
...
/>

在Java文件中(例如activity_main.java)

    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       // initiate and perform click event on button's
       ImageButton search = (ImageButton)findViewById(R.id.search);
       search.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Toast.makeText(getApplicationContext(),"search button is Clicked", Toast.LENGTH_LONG).show();
           }
       });
    }

1
你需要类似这样的内容:
在你的XML中查看android:onClickandroid:id的值:
<ImageButton
    android:id="@+id/search"
    android:layout_width="40dp"
    android:layout_height="41dp"
    android:layout_x="312dp"
    android:layout_y="10dp"
    android:clickable="true"
    android:onClick="myFunctionName"
    android:background="@drawable/search" />

在你的file.java文件中,查看函数名为myFunctionName的函数以及当事件被触发时执行的操作,进入case R.id.search:
public class SearchData extends Activity {
ImageButton search; 

  public void myFunctionName(View view) {
    switch (view.getId()) {
      case R.id.search:
        try {
          ConnectService();
        } catch (Exception e) {
          e.printStackTrace();                    
        } 
     break;
    }
  }

  protected void onCreate(Bundle savedInstanceState) {
           // code
  }

}

当我在编写您的解决方案时,会出现“添加未实现的方法”的错误。 - rajeev patidar
@rajeevpatidar 在你的代码中创建一个同名于 android:onClick="myFunctionName" 值的函数,例如 public void myFunctionName(View view) { }。 - Adrian Cid Almaguer

1

尝试在您的活动中实现Onclick监听器

 <ImageButton
        android:id="@+id/search"
        android:layout_width="40dp"
        android:layout_height="41dp"
        android:layout_x="312dp"
        android:layout_y="10dp"
        android:clickable="true"
        android:onClick="onClick"
        android:background="@drawable/search" />
    />

这个按钮没有问题。

按照下面的方式更改您的活动。

   ***search.java***
    public class SearchData extends Activity implements OnClickListener{
    ImageButton search; 

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_search_data);
            search =(ImageButton)findViewById(R.id.search);
            search.setOnClickListener(this);

  }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.search:
                  try {
                        ConnectService();
                    } catch (Exception e) {

                        e.printStackTrace();                    
                    }              
            break;
        }
    }

}

希望这能起作用。如果您在实施过程中有任何疑问,请告诉我。


0

从xml中删除android:onClick="onClick"


1
你通过注意到问题所在,给出了一个很好的解决方案。 - Lochana Ragupathy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接