Android:管理两个按钮

时间:2012-06-06 18:58:14

标签: android button onclick

我有一个问题,就是设置一个侦听器,它会根据点击的按钮执行不同的操作。

编译器没有检测到语法上的任何错误,但问题是当我在模拟器上模拟我的应用程序时,会弹出窗口询问“强制关闭”。

这是我的Java文件:

package tp.imc.namespace;



import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class IMCCalculatorActivity extends Activity {
   EditText poids,taille;
   Button boutton1,boutton2;
   TextView text1;
   Boolean k=true;
@Override

public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
    poids=(EditText) findViewById(R.id.poids);
    taille=(EditText) findViewById(R.id.taille);
    boutton1 =(Button) findViewById(R.id.boutton1);
    text1=(TextView) findViewById(R.id.text1);
    boutton1.setOnClickListener(clicker);
    boutton2.setOnClickListener(clicker);
}

// declare a OnClickListener that will execute different actions
// depending on the view that was clicked
View.OnClickListener clicker = new View.OnClickListener(){
    public void  onClick  (View  v){
        if( v == boutton1 )
{
            String a,b;
    Double r;
    a=poids.getText().toString();
    b=taille.getText().toString();
    Double zero=Double.parseDouble(b);

    a=poids.getText().toString();
    b=taille.getText().toString();

    if (zero==0)
     {
    text1.setText("Erreur ! Division par 0.");

     }
    else {
        r=(Double.parseDouble(a))/(Double.parseDouble(b)*Double.parseDouble(b));
        if (r<16.5) text1.setText("Famine.");
        else if (r>16.5 && r<18.5) text1.setText("Maigreur.");
        else if (r>=18.5 && r<25) text1.setText("Coplulence nomrale.");
        else if (r>=25 && r<30) text1.setText("Surpoids.");
        else if (r>=30 && r<35) text1.setText("Obésité modérée.");
        else if (r>=35 && r<40) text1.setText("Obésité sévère.");
        else if (r>=40) text1.setText("Obésité morbide ou massive.");

         }

}           
        else if( v == boutton2 )

        {
             poids.setText("");
     taille.setText("");
     text1.setText("");
        }                          
}
 };
}

这是我的XML文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:orientation="vertical">


<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="@string/poids"
    android:textColor="#FF0000"
    android:gravity="center"

    />

<EditText
    android:id="@+id/poids"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/poids"
    android:lines="1"
    />

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="@string/taille"
    android:textColor="#FF0000"
    android:gravity="center"
   />

<EditText
    android:id="@+id/taille"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/taille"
    android:lines="1" 
     />

<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
<RadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"  
    android:checked="true" 
    android:text="@string/metre"
    />
<RadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/centimetre"
     />

</RadioGroup>

<CheckBox 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/mega"
    android:checked="false"

    />


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

<Button
    android:id="@+id/boutton2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/raz" />
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="@string/resultat"
    />
<TextView  
    android:id="@+id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="@string/text"
    />
</LinearLayout>

1 个答案:

答案 0 :(得分:4)

您没有定义boutton2,它是null。加上这个:

boutton2 = (Button) findViewById(R.id.boutton2);
boutton2.setOnClickListener(clicker);

由于boutton1boutton2之间没有公共代码,因此您只需创建两个不同的侦听器。

最后,这条线看起来不正确。

if( v == boutton1 )

您正在尝试将视图与按钮进行比较,这可能不起作用。试试这个:

if( v.getId() == boutton1.getId() )