2011-04-10 4 views
0

ビューとレイアウトについて学ぶための正しい方向を指摘された後、私はかなり見栄えが良いと思った電卓を作れました。エレガントではない非常に基本的なコードをいくつか追加しましたが、シンプルなアプリケーションを作ることで私の偉業を濡らしたいと思っていました。これまでのところ、プロセスは停止しており、再試行するとしか書かれていません。私はそれが私のコードであり、これを実現する私のUIではないと100%肯定的です。私は1つのボタンで基本的なボタンカウンターを作ることができましたが、今は15個のボタンがあります。ここでプロセスが停止しました。 Android calculator 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

チェック(これらの行は、彼らはプロセスが停止した理由についての情報を与え、スタックトレースです) – bigstones

+0

も、コードをフォーマットするためにあなたがそれを選択する必要があります(すべての行がコードブロックならば)、エディタの上部にある '{}'ボタンをクリックします。 – bigstones

+0

DDMS/Logcatログを投稿できますか?なぜ、 'TableLayout'を使わずに' LinearLayout'で直接 'TableRow'を使うのですか? – GrAnd

答えて

3

あなたのアレイint[] numbers ={0,0};intです。 (それが動作するかどうか、そしてnum2mysignを更新する)のようなものを試してみてください

num1.setText(numbers[0]); 

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

EditTextので、私の推測では、それが下の行でエラーがスローされていることであるCharSequenceを受け入れます

また、setTextは、resourceIdを表すintを受け入れます。それはid 0の文字列を見つけることができず、エラーがスローされました。いくつかの赤い線あなたのLogCatで、それらを含めるために、あなたの投稿を編集用

+3

私は同意しますが、説明は少し異なります。 'TextView'から継承された2番目の' setText'があります。これは整数を '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; 
    } 

} 
関連する問題