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();
}
}
});
}
<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メソッドが常に最優先されるため機能します。
アクティビティに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;
}
}
}
それがうまくいくことを願っています。これを実装することに疑問がある場合は、私に知らせてください
あなたはこのようなものが必要です:
xMLで、Android:onClick
とAndroid: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
}
}
削除する Android:onClick="onClick"
from xml
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();
}
});
}