1

所以我有一个主/细节布局,我使用的细节片段之一包含两个按钮。为了区分两个单独按钮的点击,我在细节片段类中设置了我的 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;
    }

这两个按钮在 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 中工作正常)也没有。

编辑:不确定它是否重要,但我正在使用 Android 4.2 的 Nexus 10 上开发它。

那么我做错了什么?

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 回答