web-dev-qa-db-ja.com

ImageButtonでonClickイベントをどのように設定しますか?

Androidで画像ボタンを1つ作成しましたが、そのボタンをクリックしても何も起こりません。すべてのプロパティを設定しましたが、まだ何も起こりません。だから、私が間違っているところを助けてくれませんか。

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();                    
                }               
               }  
             });
    }
4
rajeev patidar
<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メソッドが常に最優先されるため機能します。

4
Boopathi

アクティビティに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;
        }
    }

}

それがうまくいくことを願っています。これを実装することに疑問がある場合は、私に知らせてください

1
Madhu

あなたはこのようなものが必要です:

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
  }

}
1

削除する Android:onClick="onClick" from xml

1
Fahim

in XMLファイル(たとえば、activity_main.xml)

<ImageButton
Android:id="@+id/search"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/home"
...
/>

in 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