2016-03-23 5 views
0

ich einen einfachen Rechner in android Studio tut, sieht mein Code wie folgt aus:Android Studio-Rechner - editText Inhalt verschwindet nach dem Klicken auf den Betrieb Taste

MainActivity.java:

package com.example.ja.calculator; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends AppCompatActivity { 


String total=""; 
double v1, v2; 
String sign=""; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
} 

public void onClick(View v){ 
    Button button = (Button)v; 
    String str=button.getText().toString(); 
    total+=str; 
    EditText edit=(EditText)findViewById(R.id.editText); 
    edit.setText(total); 
} 

public void OnAdd(View v){ 
    v1 = Double.parseDouble(total); 
    total = ""; 
    Button button = (Button)v; 
    String str = button.getText().toString(); 
    sign = str; 
    EditText edit = (EditText)findViewById(R.id.editText); 
    edit.setText(""); 
} 

public void OnCalculate(View v){ 
    EditText edit = (EditText)findViewById(R.id.editText); 
    String str2 = edit.getText().toString(); 
    v2 = Double.parseDouble(str2); 
    double grand_total = 0; 
    if(sign.equals("+")){ 
     grand_total = v1 + v2; 
    } 

    else if(sign.equals("-")){ 
     grand_total = v1 - v2; 
    } 

    else if(sign.equals("x")){ 
     grand_total = v1 * v2; 
    } 

    else if(sign.equals(":")){ 
     grand_total = v1/v2; 
    } 

    edit.setText(grand_total+""); 
} 

public void OnClear(View v){ 
    EditText edit = (EditText)findViewById(R.id.editText); 
    edit.setText(""); 
    total = ""; 

} 

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

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 

Inhalt: ca.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.example.ja.calculator.MainActivity" 
tools:showIn="@layout/activity_main"> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:ems="10" 
    android:id="@+id/editText" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="1" 
    android:id="@+id/button" 
    android:layout_centerVertical="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="2" 
    android:id="@+id/button2" 
    android:layout_alignTop="@+id/button" 
    android:layout_toRightOf="@+id/button" 
    android:layout_toEndOf="@+id/button" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="3" 
    android:id="@+id/button3" 
    android:layout_alignTop="@+id/button2" 
    android:layout_toRightOf="@+id/button2" 
    android:layout_toEndOf="@+id/button2" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="4" 
    android:id="@+id/button4" 
    android:layout_above="@+id/button" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="5" 
    android:id="@+id/button5" 
    android:layout_above="@+id/button2" 
    android:layout_toLeftOf="@+id/button3" 
    android:layout_toStartOf="@+id/button3" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="6" 
    android:id="@+id/button6" 
    android:layout_above="@+id/button3" 
    android:layout_alignLeft="@+id/button3" 
    android:layout_alignStart="@+id/button3" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="7" 
    android:id="@+id/button7" 
    android:layout_above="@+id/button4" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="8" 
    android:id="@+id/button8" 
    android:layout_alignTop="@+id/button7" 
    android:layout_toRightOf="@+id/button4" 
    android:layout_toEndOf="@+id/button4" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="9" 
    android:id="@+id/button9" 
    android:layout_alignTop="@+id/button8" 
    android:layout_toRightOf="@+id/button5" 
    android:layout_toEndOf="@+id/button5" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="0" 
    android:id="@+id/button0" 
    android:layout_below="@+id/button" 
    android:layout_toRightOf="@+id/button" 
    android:layout_toEndOf="@+id/button" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="." 
    android:id="@+id/buttonDot" 
    android:layout_below="@+id/button" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:height="80dp" 
    android:onClick="onClick" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="=" 
    android:id="@+id/buttonEQ" 
    android:layout_below="@+id/button3" 
    android:layout_alignLeft="@+id/button3" 
    android:layout_alignStart="@+id/button3" 
    android:height="80dp" 
    android:onClick="OnCalculate" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="+" 
    android:id="@+id/buttonAdd" 
    android:height="64dp" 
    android:layout_alignBottom="@+id/buttonEQ" 
    android:layout_alignLeft="@+id/buttonSub" 
    android:layout_alignStart="@+id/buttonSub" 
    android:onClick="OnAdd" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="-" 
    android:id="@+id/buttonSub" 
    android:height="64dp" 
    android:layout_above="@+id/buttonAdd" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:onClick="OnAdd" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="x" 
    android:id="@+id/buttonMul" 
    android:height="64dp" 
    android:layout_above="@+id/buttonSub" 
    android:layout_alignLeft="@+id/buttonSub" 
    android:layout_alignStart="@+id/buttonSub" 
    android:onClick="OnAdd" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=":" 
    android:id="@+id/buttonDiv" 
    android:layout_above="@+id/buttonMul" 
    android:layout_alignLeft="@+id/buttonMul" 
    android:layout_alignStart="@+id/buttonMul" 
    android:height="64dp" 
    android:onClick="OnAdd" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="CE" 
    android:id="@+id/buttonCE" 
    android:height="64dp" 
    android:layout_above="@+id/buttonDiv" 
    android:layout_toRightOf="@+id/button9" 
    android:layout_toEndOf="@+id/button9" 
    android:onClick="OnClear" /> 

Das Problem ist, wenn ich eine Zahl klicken und danach klicke ich auf die Operation (+, -, /, *) die Nummer geklickt bevor verschwindet, wie es zu beheben, so dass ich volle Operation sehen kann, zum Beispiel 5 * 5 vor dem Klicken auf "=" und danach nur für ändern Ergebnis?

Antwort

1

Der Grund für die Nummer, die angeklickt wird, bevor gelöscht wird, ist, dass Sie Text als "" festlegen. (siehe **) Sie sollten die folgenden Änderungen an Ihrem Code vornehmen, wenn Ihr Rechner richtig funktioniert.

public void OnAdd(View v) { 
    v1 = Double.parseDouble(total); 
    Button button = (Button) v; 
    String str = button.getText().toString(); 
    sign = str; 
    total += str; 
    EditText edit = (EditText) findViewById(R.id.editText); 
    edit.setText(total); 
} 

Jetzt wird das Zeichen an die gesamte Zeichenfolge angehängt. Und es wird zurück zum editText geschrieben.

+0

thx, es funktioniert für die gelöschten Zahlen, aber jetzt stürzt die Anwendung nach dem Klicken auf "=" – artur47wien

+0

Ah Ich habe nie bemerkt, wie Sie OnCalculate-Methode implementiert. Ich schlage vor, dass Sie den Ansatz ändern. Versuchen Sie, zwei Variablen zu verwenden, um die Zahlen zu speichern, anstatt Werte aus der Zeichenfolge selbst zu übernehmen. – smb564

Verwandte Themen