Pergunta

Estou tentando projetar uma calculadora simples para usar como placar de um ou dois jogos.Em última análise, quero ser capaz de selecionar o número de jogadores, fazer com que muitos rastreadores de pontuação apareçam na tela, ser capaz de usar uma calculadora de toque para somar ou subtrair (ou dividir ou multiplicar). papel.

Atualmente, ele pega o texto inserido no visor da calculadora e adiciona/subtrai/o que quer que seja à pontuação do jogador que eu escolher.

O problema é tentar fazer com que as teclas numéricas apareçam no display da calculadora.Por exemplo, quero poder digitar "1" e depois "0" e fazer com que "10" apareça na calculadora.Deveria ter sido fácil, visto que consigo inserir texto MANUALMENTE (usando o teclado padrão do Android), mas o mais próximo que consigo é que apenas 1 número apareça por vez ...

Resumindo, estou tentando fazer com que os botões numéricos de uma calculadora do tipo touch pad funcionem e sejam exibidos.Abaixo está o código do meu projeto principal.Se você precisar do meu código de layout, posso publicá-lo também (para referências a IDs).

Eu sei que provavelmente é uma solução simples, mas todo tutorial que encontro é muito complicado ou não funciona...Qualquer ajuda é muito apreciada!

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));

                            }

                    }

            });
Foi útil?

Solução

Como é esse exemplo?

Aqui está a classe principal chamada "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);

    }
}

E aqui está o arquivo 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>

Outras dicas

Você não poderia ter uma String que pudesse anexar sempre que um botão da calculadora fosse pressionado?Em seguida, atualize a tela da calculadora com a nova String?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top