1

したがって、マスター/詳細レイアウトがあり、使用する詳細フラグメントの1つに2つのボタンが含まれています。2つの別々のボタンのクリックを区別するために、onClick()関数を詳細フラグメントクラス内に次のように設定しています。

public void onClick(View view) {
        System.out.println("Click on:");
        //The switch statement determines which button was pressed
        switch (view.getId()) {
            //If it's the calculation button
            case R.id.button_calc:
                System.out.println("Calculation button!");
                //code...
                break;
            //Otherwise, if it's the save data button
            case R.id.button_saveData:
                System.out.println("Save button!");
                //code...
                break;
            default:
                break;
    }

2つのボタンは、XMLで次のように宣言されています。

    <Button android:id="@+id/button_calc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/button_singleCalc"/>

    <Button android:id="@+id/button_saveData"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="@string/button_saveData"/>

button_calcをタップすると、色が変わり、カチッという音がして、期待どおりにコードが実行されます。ただし、button_saveDataをタップすると、色が変わるだけで、クリック音やコードの実行はなく、println()(button_calcで正常に機能します)も変更されません。

編集:それが重要かどうかはわかりませんが、Android4.2を搭載したNexus10でこれを開発しています。

だから私は何が間違っているのですか?

4

1 に答える 1

0

あなたの質問に直接答えるために、私はあなたが投稿したコードに何の間違いも見当たりません。

私にとっては、onClick()イベントを直接xmlに配置することを好みます。私は、Web開発の歴史があるので、より自然に感じると思います。

<Button android:id="@+id/button_calc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/button_singleCalc"
    android:onClick="onClickCalculation" />

<Button android:id="@+id/button_saveData"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/button_saveData"
    android:onClick="onClickSaveData" />

次に、(フラグメントではなく)包含アクティビティで

public void onClickCalculation(View view) {
        System.out.println("Calculation button!");
        //code...
}

public void onClickSaveData(View view) {
        System.out.println("Calculation button!");
        //code...
}
于 2012-12-23T15:46:21.470 に答える