0

我有一个关于设置一个侦听器的问题,该侦听器将根据单击的按钮执行不同的操作。

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

这是我的 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>
4

1 回答 1

4

你没有定义boutton2,它是空的。添加这个:

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

由于它们boutton1之间boutton2没有通用代码,因此您可以简单地创建两个不同的侦听器。

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

if( v == boutton1 )

您正在尝试将 View 与可能不起作用的 Button 进行比较。试试这个:

if( v.getId() == boutton1.getId() )
于 2012-06-06T19:01:21.667 回答