質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.78%

androidで電卓アプリの作りたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 5,689

score 13

eclipseを使って仮想デバイスにですが、電卓アプリを作ろうとしています。
srcのjavaとres/layoutとres/values/strings.xmlの3つを使って作っています。
自信がありませんが、layoutとstringsの部分だけ形としてできたつもりです。
そのlayoutから電卓のようにしたいのですが、javaの部分がわかりません。
よろしければ、javaの部分を教えてください。

一応layoutとstringsの部分を記載します。
何も表示してないボタンはイベントハンドラです。

layout
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

   <TextView
      android:id="@+id/display"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text=""
     android:textSize="40dip"
     android:textColor="#f39800"
     android:gravity="right"
     android:background="#999999"/>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:id="@+id/bt_click"
        android:layout_width="175dp"
        android:layout_height="wrap_content"
        android:text="@string/bt_click" />

    <Button
        android:id="@+id/bt_AC"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_AC"/>
    <Button
        android:id="@+id/bt_waru"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_waru"/>
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/bt_7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_7" />

    <Button
        android:id="@+id/bt_8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_8"/>
    <Button
        android:id="@+id/bt_9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_9"/>
    <Button
        android:id="@+id/bt_kake"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_kake"/>
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/bt_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_4" />

    <Button
        android:id="@+id/bt_5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_5"/>
    <Button
        android:id="@+id/bt_6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_6"/>
    <Button
        android:id="@+id/bt_hiki"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_hiki"/>
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/bt_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_1" />

    <Button
        android:id="@+id/bt_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_2"/>
    <Button
        android:id="@+id/bt_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_3"/>
    <Button
        android:id="@+id/bt_tasu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_tasu"/>
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:id="@+id/bt_0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_0" />

    <Button
        android:id="@+id/bt_ten"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_ten"/>

    <Button
        android:id="@+id/bt_wa"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:text="@string/bt_wa" />

</LinearLayout>

strings.xml
<resources>

    <string name="app_name">MyCalculator8</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

    <string name="bt_click"> </string>
    <string name="bt_AC">AC</string>
    <string name="bt_waru">÷</string>
    <string name="bt_7">7</string>
    <string name="bt_8">8</string>
    <string name="bt_9">9</string>
    <string name="bt_kake">×</string>
    <string name="bt_4">4</string>
    <string name="bt_5">5</string>
    <string name="bt_6">6</string>
    <string name="bt_hiki">-</string>
    <string name="bt_1">1</string>
    <string name="bt_2">2</string>
    <string name="bt_3">3</string>
    <string name="bt_tasu">+</string>
    <string name="bt_0">0</string>
    <string name="bt_ten">.</string>
    <string name="bt_wa">=</string>

</resources>


  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

marron様、始めまして。
以下、回答させていただきます。

Androidアプリの開発において、電卓アプリというのは、
入門編としては最適な課題であると私は考えております。

Androidアプリの開発において、これから何度も使うことになるであろう、
メソッドなどをたくさん学ぶことができるからです。

電卓アプリのプログラムにおいて、もっとも重要なのは
「onClick」というものになります。

このonClickというのも実装の方法はたくさんありますが、
簡単に実装できるやり方がありますので、紹介させていただきたいと思います。

例:数値1のボタン

変更前
<Button
        android:id="@+id/bt_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_4" />

変更後
<Button
        android:id="@+id/bt_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt_4" 
        android:onClick="num"/>
このように、viewのXMLに「android:onClick="メソッド"」のように
書き加えることによって、そのviewがクリック、タップされたときの挙動を
指定することができます。

呼び出し先のメソッドはJAVAのファイルに以下のように書き加えることで、
処理を設定することができます。

例:メソッド「num」
private void num(View v){
   // 処理するコード
}
このようにViewの引数をもつ、先ほどXMLで指定したものと
同名のメソッドを定義することによってonClickで呼びだすことが可能になります。

あと引数にクリックした数値が入っておりますので、
以下のようにコードを実装すれば数値を入力する部分が完成します。

private void num(View v){
   // クリックしたビューから数値を取得
   String input = v.getText().toString();

   // display_viewから現在表示中の数値を取得
   // (diplay_viewはグローバル変数などで指定しておく)
   String display = display_view.getText().toString;

   // display_viewに入力された数値を加えて表示
   display_view.setText(display + input);
}

すべてのプログラムを書きますと、膨大な量になってしまいますので、
ここに書くことはできませんが、ここで説明しましたonClickを使いこなすことができれば、
電卓アプリを完成させることは問題なくできるはずですので、がんばってみてください!

補足・・・
インターネットで検索すれば、まったく別アプローチから書いているプログラムなどもございますが、
配列を使っていたりだとか、Listnerというものをつかっていたりだとか、すこし複雑なものがでてくるものが多いです。

しかし、質問者様が簡単だ、と思うやりかたが、どのやり方なのかは質問者様次第ですので、
「Android 電卓 開発」などでけn

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/16 17:19

    ご回答ありがとうございます。
    たくさんのアドバイスをいただいたので、これを元に作成していきます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る