Question

J'essaie de concevoir une calculatrice simple pour une utilisation comme tableau de bord pour un jeu ou deux. En fin de compte, je veux pouvoir sélectionner le nombre de joueurs, que de nombreux trackers de score apparaissent à l'écran, de pouvoir utiliser la calculatrice tactile pour ajouter ou soustraire (ou diviser ou multiplier), je l'ai fait fonctionner pour le plus partie.

Actuellement, il prend le texte entré dans l'affichage de la calculatrice, ajoute / soustrait / quel que soit le score du joueur que je choisis.

Le problème est d'essayer d'obtenir les touches numériques pour s'afficher dans la partie d'affichage de la calculatrice. Par exemple, je veux pouvoir frapper "1" puis "0" et faire apparaître "10" dans la calculatrice. Cela aurait dû être facile, car je suis en mesure de saisir le texte manuellement (en utilisant le clavier par défaut Android), mais le plus proche possible est que pour un seul numéro apparaît à la fois ...

Pour faire court, j'essaie de faire fonctionner et afficher les boutons numériques de la calculatrice de type tactile. Vous trouverez ci-dessous mon code de projet principal. Si vous avez besoin de mon code de mise en page, je peux également le publier (pour des références aux ID).

Je sais que c'est probablement une solution simple, mais chaque tutoriel que je trouve est trop compliqué ou ne fonctionne pas ... toute aide est grandement appréciée!

package com.MCalculator8.test;

import com.MCalculator8.test.R;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MCalculator8Activity extends Activity {
    private EditText player1name;
    private EditText player2name;
    private EditText player3name;
    private EditText player4name;
    private EditText player5name;
    private EditText player6name;
    private EditText player7name;

    private EditText player1score;
    private EditText player2score;
    private EditText player3score;
    private EditText player4score;
    private EditText player5score;
    private EditText player6score;
    private EditText player7score;

    private EditText input;

    private TextView operator;
    private MCalculator8Activity mContext;

    // Called when the activity is first created. 
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mContext = this;

            setContentView(R.layout.main);

            player1name = (EditText) findViewById(R.id.player1name);
            player2name = (EditText) findViewById(R.id.player2name);
            player3name = (EditText) findViewById(R.id.player3name);
            player4name = (EditText) findViewById(R.id.player4name);
            player5name = (EditText) findViewById(R.id.player5name);
            player6name = (EditText) findViewById(R.id.player6name);
            player7name = (EditText) findViewById(R.id.player7name);

            input = (EditText) findViewById(R.id.input);

            player1score = (EditText) findViewById(R.id.player1score);
            player2score = (EditText) findViewById(R.id.player2score);
            player3score = (EditText) findViewById(R.id.player3score);
            player4score = (EditText) findViewById(R.id.player4score);
            player5score = (EditText) findViewById(R.id.player5score);
            player6score = (EditText) findViewById(R.id.player6score);
            player7score = (EditText) findViewById(R.id.player7score);

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

            // We create an OnClick Event in each button.

            Button plusButton = (Button) findViewById(R.id.add);
            Button minusButton = (Button) findViewById(R.id.subtract);
            Button multiplyButton = (Button) findViewById(R.id.multiply);
            Button player1equals = (Button) findViewById(R.id.player1equals);
            Button player2equals = (Button) findViewById(R.id.player2equals);
            Button player3equals = (Button) findViewById(R.id.player3equals);
            Button player4equals = (Button) findViewById(R.id.player4equals);
            Button player5equals = (Button) findViewById(R.id.player5equals);
            Button player6equals = (Button) findViewById(R.id.player6equals);
            Button player7equals = (Button) findViewById(R.id.player7equals);

            plusButton.setOnClickListener(new OnClickListener() {

                    public void onClick(View arg0) {

                            operator.setText("+");

                    }

            });

            minusButton.setOnClickListener(new OnClickListener() {

                    public void onClick(View arg0) {

                            operator.setText("-");

                    }

            });

            multiplyButton.setOnClickListener(new OnClickListener() {

                    public void onClick(View arg0) {

                            operator.setText("x");

                    }

            });


            player1equals.setOnClickListener(new OnClickListener() {

                    private AlertDialog show;

                    public void onClick(View arg0) {

                            if ((input.getText().length() == 0)
                                            || (input.getText().toString() == " ")) {
                                         //   || (input2.getText().length() == 0)
                                         //   || (input2.getText().toString() == " ")) {

                                    show = new AlertDialog.Builder(mContext).setTitle("Error")
                                                    .setMessage("Some inputs are empty")
                                                    .setPositiveButton("OK", null).show();

                            } else if (operator.getText().equals("")) {

                                    show = new AlertDialog.Builder(mContext).setTitle("Error")
                                                    .setMessage("Operator is null").setPositiveButton(
                                                                    "OK", null).show();

                            } else if (operator.getText().equals("+")) {

                                    double result = new Double(input.getText().toString())
                                                    + new Double(player1score.getText().toString());

                                    player1score.setText(Double.toString(result));

                            } else if (operator.getText().equals("-")) {

                                    double result = new Double(player1score.getText().toString())
                                                    - new Double(input.getText().toString());

                                    player1score.setText(Double.toString(result));

                            } else if (operator.getText().equals("x")) {

                                    double result = new Double(input.getText().toString())
                                                    * new Double(player1score.getText().toString());


                                    player1score.setText(Double.toString(result));

                            }

                    }

            });
Était-ce utile?

La solution

Comment est cet exemple?

Voici la classe principale appelée "calculatorexample.java"

package com.calculatorExample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class CalculatorExample extends Activity implements android.view.View.OnClickListener{
    Button add, subtract, multiply, divide;
    TextView firstInput, secondInput, output;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Reference TextViews and Buttons
        firstInput = (TextView) findViewById(R.id.firstIput);
        secondInput = (TextView) findViewById(R.id.secondInput);
        output = (TextView) findViewById(R.id.output);
        add = (Button) findViewById(R.id.add);
        subtract = (Button) findViewById(R.id.subtract);
        multiply = (Button) findViewById(R.id.multiply);
        divide = (Button) findViewById(R.id.divide);

        // Set listeners for when buttons are pressed
        add.setOnClickListener(this);
        subtract.setOnClickListener(this);
        multiply.setOnClickListener(this);
        divide.setOnClickListener(this);

    }

    /**
     * Switch statement to decide which button was pressed
     */
    public void onClick(View arg0) {
        // Get values from top two TextViews
        double firstInputValue = Double.parseDouble(firstInput.getText().toString());
        double secondInputValue = Double.parseDouble(secondInput.getText().toString());
        // Initialise output
        double outputValue = 0;

        // Perform relevant operations
        switch(arg0.getId()){
        case R.id.add:
            outputValue = firstInputValue + secondInputValue;
            break;
        case R.id.subtract:
            outputValue = firstInputValue - secondInputValue;
            break;
        case R.id.multiply:
            outputValue = firstInputValue * secondInputValue;
            break;
        case R.id.divide:
            outputValue = firstInputValue / secondInputValue;
            break;
        }
        // Add result to Running total stored in output TextView
        outputValue += Double.parseDouble(output.getText().toString());
        output.setText("" + outputValue);

    }
}

Et voici le fichier XML ("main.xml")

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout 
        android:weightSum="100"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
    >
        <EditText 
            android:layout_weight="50"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/firstIput">
        </EditText>
        <EditText 
            android:layout_weight="50"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:id="@+id/secondInput">
        </EditText>
    </LinearLayout>
    <LinearLayout 
        android:weightSum="100"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
    >
        <Button 
            android:layout_weight="50"
            android:text="+" 
            android:id="@+id/add" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
        <Button 
            android:layout_weight="50"
            android:text="-" 
            android:id="@+id/subtract" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
    <LinearLayout 
        android:weightSum="100"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
    >
        <Button 
            android:layout_weight="50"
            android:text="X" 
            android:id="@+id/multiply" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
        <Button 
            android:layout_weight="50"
            android:text="/" 
            android:id="@+id/divide"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
    <EditText 
        android:text="0.0"
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/output">
    </EditText>
</LinearLayout>

Autres conseils

Ne pourriez-vous pas avoir une chaîne que vous pouvez ajouter à chaque fois qu'un bouton sur la calculatrice est enfoncé? Puis mettez à jour l'affichage de la calculatrice avec la nouvelle chaîne?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top