2017-09-08 2 views
0

Je suis débutant dans Android. J'ai juste commencé à travailler sur une application de calculatrice et je ne sais pas pourquoi l'application continue de planter tout le temps.L'application Simple Calculator garde les plantages

J'ai deux activités ... MainActivity et CalculatorActivity

MainActivity:

public class MainActivity extends AppCompatActivity 
     {    
      Button calcubtn;    
      @Override 
      protected void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 

       calcubtn = (Button) findViewById(R.id.calculatorbtn); 
       calcubtn.setOnClickListener(new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View view) 
        { 
         Intent calculator = new Intent(MainActivity.this, CalculatorActivity.class); 
         startActivity(calculator); 
        } 
       }); 
      } 
     } 

MainActivity Mise en page:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="com.example.rfkha.myfirstapp.MainActivity"> 


     <TextView 
      android:id="@+id/textView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="13dp" 
      android:textSize="27sp" 
      android:textColor="@android:color/holo_red_light" 
      android:text="@string/functions_text" /> 

     <Button 
      android:id="@+id/calculatorbtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentStart="true" 
      android:layout_below="@+id/textView" 
      android:layout_marginStart="43dp" 
      android:layout_marginTop="70dp" 
      android:text="@string/calcu_string" 

      /> 

    </RelativeLayout> 

CalculatorActivity: (par exemple l'activité de l'enfant)Dans la classe d'activité, j'ai ajouté implements View.OnclickListener. Je l'ai trouvé dans stackoverflow quelque part. Je pense que le problème vient de cette chose. Aussi, il faut utiliser le mot-clé abstract pour l'utiliser avec la classe d'activité, donc je l'ai utilisé aussi.

public abstract class CalculatorActivity extends AppCompatActivity implements View.OnClickListener { 

     Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, zerobtn, dotbtn, equalbtn, minusbtn, sumbtn, divbtn, mulbtn; 
     double num1, num2; 
     boolean sum, minus, div, mul; 
     EditText textarea= (EditText) findViewById(R.id.textarea); 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_calculator); 

      btn1 = (Button) findViewById(R.id.btn1); 
      btn1.setOnClickListener(this); 
      (((Same Code for buttons upto 9 and SUM, MINUS, DIVISION and MULtiplication Buttons))) 

      } 

     @Override 
     public void onClick(View v) 
     { 
      switch (v.getId()) 
      { 
       case R.id.btn1: { 
        textarea.setText(textarea.getText()+"1"); 
        break; 
       } 
       case R.id.btn2: { 
        textarea.setText(textarea.getText()+"2"); 
        break; 
       } 
       case R.id.btn3: 

       ((((( And So on... Upto Button 9 )))))) 


       case R.id.zerobtn: { 
        textarea.setText(textarea.getText()+"0"); 
        break; 
       } 
       case R.id.dotbtn: { 
        textarea.setText(textarea.getText()+"."); 
        break; 
       } 
       case R.id.sumbtn: { 
        num1=Double.parseDouble(textarea.getText().toString()); 
        sum=true; 
        textarea.setText(null); 
        break; 
       } 
        (((((Likewise for Minus, Division and Multiplication buttons)))))))))) 

       case R.id.equalbtn: 
        { 
         if (num1!=0) 
         { 
          num2=Double.parseDouble(textarea.getText().toString()); 
          if (sum) { 
           textarea.setText(num1+num2+""); 
           sum=false; 
          } 
          else if(mul) { 
           textarea.setText(num1*num2+""); 
           mul=false; 
          } 
          else if(div) { 
           textarea.setText(num1/num2+""); 
           div=false; 
          } 
          else if(minus) { 
           textarea.setText(num1-num2+""); 
           minus=false; 
          } 

         } 
         else{ 
          Toast.makeText(getApplicationContext(), "First select a number!!", Toast.LENGTH_SHORT); 
         } 
        break; 
        }   
      } 
     } 
    } 

Calculator Mise en page d'activité:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:weightSum="1" 
     tools:context="com.example.rfkha.myfirstapp.CalculatorActivity"> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="13dp" 
      android:layout_marginTop="8dp" 
      android:gravity="center_horizontal" 
      android:text="@string/calculatortxt" 
      android:textSize="25sp" /> 

     <EditText 
      android:id="@+id/textarea" 
      android:layout_width="351dp" 
      android:layout_height="154dp" 
      android:layout_marginStart="16dp" 
      android:ems="10" 
      android:hint="@string/resultsString" 
      android:textSize="33sp" 
      android:textAlignment="textEnd" 
      android:padding="11dp" 
      android:inputType="textPersonName" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal" 
      android:weightSum="1"> 

      <Button 
       android:id="@+id/clearbt" 
       android:layout_width="293dp" 
       android:layout_height="51dp" 
       android:text="@string/cetxt" 
       android:textSize="24sp" /> 

     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/btn7" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="7" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn8" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="8" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn9" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="9" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/mulbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:layout_marginStart="27dp" 
       android:text="x" 
       android:textSize="18sp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/btn4" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="4" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn5" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="5" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn6" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="6" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/minusbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:layout_marginStart="27dp" 
       android:text="-" 
       android:textSize="24sp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/btn1" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="1" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn2" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="2" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/btn3" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="3" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/sumbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:layout_marginStart="27dp" 
       android:text="+" 
       android:textSize="24sp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center_horizontal" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/dotbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="." 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/zerobtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="0" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/equalbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:text="=" 
       android:textSize="24sp" /> 

      <Button 
       android:id="@+id/divbtn" 
       android:layout_width="68dp" 
       android:layout_height="51dp" 
       android:layout_marginStart="27dp" 
       android:text="/" 
       android:textSize="24sp" /> 
     </LinearLayout> 


    </LinearLayout> 

Logcat: (erreurs)

Lien vers Logcat: https://pastebin.com/hbwZVUZg

+0

Quelle erreur obtenez-vous en cas de panne? Si vous nous donnez autant de code, donnez-nous quelque chose à * pinpoint * où se trouve l'erreur. – hnefatl

+0

Quelle est l'erreur sur votre LogCat? Avez-vous configuré votre activité sur le manifeste? [cochez ici] [1] [1]: https://stackoverflow.com/questions/20870202/how-to-add-activity-to-manifest-xml-in-right-way – Xaren

+0

@hnefatl Vérifiez la "CalculatorActivity" où j'ai mentionné l'erreur. Par ailleurs, l'erreur ne s'affiche pas dans le studio Android, mais l'application se bloque encore –

Répondre

1

Supprimez le mot-clé abstract. puis la ligne textarea= (EditText) findViewById(R.id.textarea); changement pour EditText textarea; et dernière Mettre cela sur le onCreate() textarea = (EditText)findViewById(R.id.textarea);

Rappelez-vous que vous ne pouvez pas instancier une classe abstraite. here

Et vérifier comment déboguer here

public class CalculatorActivity extends AppCompatActivity implements View.OnClickListener { 

Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, zerobtn, dotbtn, equalbtn, minusbtn, sumbtn, divbtn, mulbtn; 
double num1, num2; 
boolean sum, minus, div, mul; 
EditText textarea; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_calculator); 

    textarea = (EditText) findViewById(R.id.textarea); 
0

Mettez ce code dans onCreate:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    ... 
    textarea = (EditText)findViewById(R.id.textarea); 
    ... 
} 
+1

Expliquer pourquoi cela devrait fonctionner serait une amélioration - sans doute que l'obtention d'un contrôle par ID n'est pas une opération valide jusqu'à ce que le l'activité a été créée. – hnefatl

0

Vérifiez si vous utilisez les dépendances de même version ou non. Il ne devrait pas y avoir de conflit de version entre les dépendances.

+0

Problème résolu bro .. c'était dû à l'abstrait '...merci à @Xaren dans le 2ème commentaire –