2011-04-10 3 views
0

После в правильном направлении, чтобы узнать о взглядах и макеты, я был в состоянии сделать калькулятор, который я думал, выглядел довольно хорошо. Я добавил к нему очень простой код, который далек от элегантности, но я хотел, чтобы мой подвиг стал простым приложением. Пока он только говорит, что процесс остановился и повторить попытку. Я на 100 процентов уверен, что это мой код, а не мой ui, чтобы это произошло. Я смог сделать базовый счетчик кнопок до 1 кнопки, но теперь с 15 кнопками, я думаю, что я испортил.Процесс прекратился. Android калькулятор trouples

Вот код калькулятор называется hellocats (я следовал основной учебник и продолжал добавлять)

package com.hellocats; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.*; 
public class hellokatz extends Activity { 
    /** Called when the activity is first created. */ 



int numbermover = 0; 
int[] numbers ={0,0}; 

String sign = "+"; 
int answer; 




@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final Button button0 = (Button)findViewById(R.id.button0); 
    final Button button1 = (Button)findViewById(R.id.button1); 
    final Button button2 = (Button)findViewById(R.id.button2); 
    final Button button3 = (Button)findViewById(R.id.button3); 
    final Button button4 = (Button)findViewById(R.id.button4); 
    final Button button5 = (Button)findViewById(R.id.button5); 
    final Button button6 = (Button)findViewById(R.id.button6); 
    final Button button7 = (Button)findViewById(R.id.button7); 
    final Button button8 = (Button)findViewById(R.id.button8); 
    final Button button9 = (Button)findViewById(R.id.button9); 

    final Button addbutton = (Button)findViewById(R.id.buttonadd); 
    final Button subbutton = (Button)findViewById(R.id.buttonsub); 
    final Button mulbutton = (Button)findViewById(R.id.buttonmul); 
    final Button divbutton = (Button)findViewById(R.id.buttondiv); 
    final Button equalsbutton = (Button)findViewById(R.id.buttonequals); 

    final EditText num1 = (EditText)findViewById(R.id.num1); 
    final EditText mysign = (EditText)findViewById(R.id.sign); 
    final EditText num2 = (EditText)findViewById(R.id.num2); 
    final EditText answer = (EditText)findViewById(R.id.answer); 


    num1.setText(numbers[0]); 
    num2.setText(numbers[1]); 
    mysign.setText(sign); 


    button0.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 0; 

     } 
    }); 
     button1.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 1; 

     } 
    }); 
     button2.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 2; 

     } 
    }); 
     button3.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 3; 

     } 
    }); 
     button4.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 4; 

     } 
    }); 
     button5.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 5; 

     } 
    }); 
     button6.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 6; 

     } 
    }); 
     button7.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 7; 

     } 
    }); 
     button8.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 8; 

     } 
    }); 
     button9.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      numbers[numbermover] = 9; 

     } 
     }); 


} 
} 

Вот файл макета main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical"> 
    <TableRow android:id="@+id/tableRow1" android:layout_height="wrap_content" android:layout_width="match_parent"> 
     <Button android:text=" 1 " android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" 2 " android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" 3 " android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" 4 " android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" 5 " android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" 6 " android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" 7 " android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
    </TableRow> 
    <TableRow android:id="@+id/tableRow2" android:layout_height="wrap_content" android:layout_width="match_parent"> 
     <Button android:text=" 8 " android:id="@+id/button8" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" 9 " android:id="@+id/button9" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" 0 " android:id="@+id/button0" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
    </TableRow> 
    <TableRow android:id="@+id/tableRow3" android:layout_height="wrap_content" android:layout_width="match_parent"> 
     <Button android:text=" + " android:id="@+id/buttonadd" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" - " android:id="@+id/buttonsub" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" X " android:id="@+id/buttonmul" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text="/ " android:id="@+id/buttondiv" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
     <Button android:text=" = " android:id="@+id/buttonequals" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
    </TableRow> 
    <TableRow android:id="@+id/tableRow4" android:layout_height="wrap_content" android:layout_width="match_parent"> 
     <EditText android:text="  " android:id="@+id/num1" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText> 
     <EditText android:text="  " android:id="@+id/sign" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText> 
     <EditText android:text="  " android:id="@+id/num2" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText> 
     <EditText android:text=" = " android:id="@+id/equals" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText> 
     <EditText android:text="  " android:id="@+id/answer" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText> 
    </TableRow> 
</LinearLayout> 

Что я сделать неправильно в моем java-файле и как я могу его исправить и узнать из него?

Спасибо: АОЛ я очень новый на ваш сайт и до сих пор не могу понять, за жизнь мне, как отправить файл main.xml. Я попробовал CTRL + K и CTRL + V, чтобы пройти мимо, и до сих пор ничего нет

+0

проверка некоторых красных линий в вашем LogCat и редактировать свой пост, чтобы включить их (эти строки трассировки стека, они дают информацию о том, почему процесс остановлен) – bigstones

+0

также для форматирования кода вы должны выбрать его (все строки, если это блок кода) и нажмите кнопку '{}' в верхней части редактора. – bigstones

+0

Не могли бы вы отправить журнал DDMS/Logcat? И почему используется 'TableRow' непосредственно в' LinearLayout' без 'TableLayout'? – GrAnd

ответ

3

Ваш массив int[] numbers ={0,0}; имеет тип int.

EditText принимает CharSequence так я думаю, что он выдает ошибку в строке ниже:

num1.setText(numbers[0]); 

попробовать что-то вроде (если он работает, обновления затем num2 и mysign):

num1.setText(Integer.toString(numbers[0])); 

Как GrAnd отметил, setText также принимает int, что представляет собой resourceId. Он не смог найти строку с id 0 и выбросил ошибку.

+3

Согласен, но объяснение немного другое. Существует второй 'setText', унаследованный от' TextView', который принимает целое число как 'resourceID'. И определенно не удалось найти ресурс с 'id = 0'. И Java не передавал автоматически «CharSequence» из-за существования метода, который принимает целые числа. – GrAnd

+0

aha, я не видел метод 'public final void setText (int resid)' когда я искал. Спасибо, что указали это. – ccheneson

+0

Спасибо за помощь. Теперь он фактически отображает то, что я сделал. Теперь пришло время исправить логическую ошибку, когда текст никогда не устанавливается на любое другое число, кроме его начального значения. – user700508

0
package com.example.showoff; 

import java.util.ArrayList; 
import android.os.Bundle; 
import android.app.Activity; 
import android.text.method.DigitsKeyListener; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 


import android.widget.TextView; 

public class MainActivity extends Activity { 

     TextView edittest1; 

     Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal; 

     ArrayList<Float> math = new ArrayList<Float>(); 
     float m1; 
     float m2; 
     float temp; 

     int currentOperation = 0; 
     int nextOperation; 

     final static int ADD = 1; 
     final static int SUBTRACT = 2; 
     final static int MULTIPLY =3; 
     final static int DIVISION = 4; 
     final static int EQUALS = 0; 
     final static int CLEAR = 1; 
     final static int DONT_CLEAR = 0; 
     int clearDisplay = 0; 




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

      edittest1 = (TextView) findViewById(R.id.edittest1); 



      one =(Button) findViewById(R.id.btnNum1Id); 
      two =(Button) findViewById(R.id.btnNum2Id); 
      three =(Button) findViewById(R.id.btnNum3Id); 
      four =(Button) findViewById(R.id.btnNum4Id); 
      five =(Button) findViewById(R.id.btnNum5Id); 
      six =(Button) findViewById(R.id.btnNum6Id); 
      seven =(Button) findViewById(R.id.btnNum7Id); 
      eight =(Button) findViewById(R.id.btnNum8Id); 
      nine =(Button) findViewById(R.id.btnNum9Id); 
      zero =(Button) findViewById(R.id.btnNum0Id); 
      add =(Button) findViewById(R.id.btnNumAddId); 
      sub =(Button) findViewById(R.id.btnNumSubId); 
      mul =(Button) findViewById(R.id.btnNumMulId); 
      div =(Button) findViewById(R.id.btnNumDivId); 
      cancel =(Button) findViewById(R.id.btnNumClearId); 
      equal =(Button) findViewById(R.id.btnNumEqualId); 

      edittest1.setKeyListener(DigitsKeyListener.getInstance(true,true)); 

      registerListeners(); 


    } 

    private void registerListeners() { 
     // TODO Auto-generated method stub 

     one.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("1"); 

      } 
     }); 

     two.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("2"); 

      } 
     }); 

     three.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("3"); 

      } 
     }); 
     four.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("4"); 

      } 
     }); 

     five.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("5"); 

      } 
     }); 

     six.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("6"); 

      } 
     }); 
     seven.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("7"); 

      } 
     }); 

     eight.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("8"); 

      } 
     }); 

     nine.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("9"); 

      } 
     }); 
     zero.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (clearDisplay == CLEAR) { 
        edittest1.setText(""); 
       } 
       clearDisplay = DONT_CLEAR; 
       edittest1.append("0"); 

      } 
     }); 
     add.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 


       calcLogic(ADD); 
       } 
      } 
     ); 

     sub.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       calcLogic(SUBTRACT); 
      }    
     }); 
     mul.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       calcLogic(MULTIPLY); 

      } 
     }); 
     div.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       calcLogic(DIVISION);      
      } 
     }); 
     equal.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       calcLogic(EQUALS); 

      } 
     }); 
     cancel.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       edittest1.setText("0"); 
       m1 = 0; 
       m2 = 0; 
       math.removeAll(math); 
       currentOperation = 0; 
       nextOperation = 0;  

      } 
     }); 


} 
    private void calcLogic(int operator){ 
     math.add(Float.parseFloat(edittest1.getText().toString())); 

      if (operator != EQUALS) { 
       nextOperation = operator; 
      } 
      else if (operator == EQUALS){ 
       nextOperation = 0; 
       //operator=' '; 
      } 



      switch (currentOperation) { 
      case ADD:    
       m1 = math.get(0); 
       m2 = math.get(1); 

       math.removeAll(math); 

       math.add(m1 + m2); 


       edittest1.setText(String.format("%.3f", math.get(0))); 



       break; 
      case SUBTRACT: 
       m1 = math.get(0); 
       m2 = math.get(1); 

       math.removeAll(math); 

       math.add(m1 - m2); 

       edittest1.setText(String.format("%.3f", math.get(0))); 
       break; 
      case MULTIPLY: 
       m1 = math.get(0); 
       m2 = math.get(1); 

       math.removeAll(math); 

       math.add(m1 * m2); 

       edittest1.setText(String.format("%.3f", math.get(0))); 
       break; 
      case DIVISION: 
       m1 = math.get(0); 
       m2 = math.get(1); 

       math.removeAll(math); 

       math.add(m1/m2); 

       edittest1.setText(String.format("%.3f", math.get(0))); 
       break; 
      } 

      clearDisplay = CLEAR; 
      currentOperation = nextOperation; 
      if (operator == EQUALS) { 
       m1 = 0; 
       m2 = 0; 
       math.removeAll(math); 
      } 

     } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^