如何在ImageButton中设置onClick事件?

时间:2015-03-16 06:16:02

标签: android events onclick listener android-imagebutton

我在android中创建了一个图像按钮,但是当我点击该按钮时没有发生任何事情。我已经设置了所有属性,但仍然没有发生任何事情。所以,如果我错了,你可以帮助我。

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

5 个答案:

答案 0 :(得分:4)

<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,您应该从图像按钮Xml中删除android:onClick="onClick"行。然后它将起作用,因为第一优先级将始终用于您在xml中提到的onClick方法。

答案 1 :(得分: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
  }

}

答案 2 :(得分:1)

从xml

中删除android:onClick="onClick"

答案 3 :(得分: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;
        }
    }

}

希望它会奏效。如果您对此有任何疑问,请告诉我

答案 4 :(得分:1)

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