2

アプリケーションの 1 つに問題があります。他のアクティビティにリンクするカスタム ボタンを持つ基本的なアプリケーション メニューを作成しました。私の問題は、テスト中にアプリケーションがボタンのクリックを登録していないように見えることです。クリックしてもエラーやクラッシュは発生しません。アプリケーションはクリックが発生しなかったかのように動作します。誰かがこの問題について何か助けてくれますか? 以下のコードを提供しました。

メインメニューコード:

public void initialize(){

    Film = (Button) findViewById(R.id.bFilm);
}

@Override
public void onClick(View view) {
    try{
    switch(view.getId()){
    case R.id.bFilm:
        Intent film = new Intent(this, Film.class);
        startActivity(film);
        break;

レイアウト コード:

<Button
    android:id="@+id/bFilm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="20dp"
    android:layout_marginTop="110dp"
    android:background="@drawable/film"
    android:textSize="20sp" />

カスタム XML:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:state_pressed="true" android:drawable="@drawable/actor_1"></item>
    <item android:state_focused="true" android:drawable="@drawable/actor_1"></item>
        <item android:drawable="@drawable/actor_1"></item>
</selector>
4

3 に答える 3

1

これを試して

public void initialize(){

Film = (Button) findViewById(R.id.bFilm);
Film.setOnClickListener(this);
}
于 2013-03-08T19:17:18.993 に答える
1

追加

android:onclick="onClick"

 <Button
        android:id="@+id/bFilm"
android:onclick="onClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="110dp"
        android:background="@drawable/film"
        android:textSize="20sp" />

それは動作します
EDIT ただし onClick、属性は API 3 以下では定義されていません。(Android <= 1.5)

API 4 (Android 1.6) 以降で動作します

互換性が必要な場合は、次を使用できます。

findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Do stuff
    }
});
于 2013-03-08T19:08:31.177 に答える
1

initialize() 内でfindViewById、次の後に追加します。

Film.setOnClickListener(onClick);
于 2013-03-08T19:08:43.690 に答える