Android - 片段中的两个按钮中的第二个没有响应

时间:2012-12-23 14:06:24

标签: java android android-fragments

所以我有一个Master / Detail布局,我使用的一个Detail片段包含两个按钮。为了区分两个单独按钮上的点击,我在详细片段类中设置了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上进行开发。

那么我做错了什么?

1 个答案:

答案 0 :(得分: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...
}