2012-06-06 53 views
0

我有一个问题,有关设置一个侦听器,将执行基于点击的按钮不同的动作。Android:管理两个按钮

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

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

你不定义boutton2,它是空的。补充一点:

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

由于boutton1boutton2没有共同的代码,你可以简单地创建两个不同的听众之间。

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

if(v == boutton1) 

您试图比较一个视图到一个按钮,可能无法正常工作。试试这个:

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

Sam是对的,在发生这些问题时也一定要阅读Logcat,因为它会导致您导致NullException的行号。 – Jeff