2016-03-29 19 views
0

Ich versuche, an einer einfachen Budgetanwendung zu arbeiten, habe aber Probleme mit der Aktualisierung des Budgetbetrags. Auf meinem Hauptbildschirm kann der Benutzer auf eine Schaltfläche klicken, die ihn zu einer anderen Aktivität führt, wo er seinem Budget ein Einkommen hinzufügen kann. Sobald sie auf die Schaltfläche "Einkommen hinzufügen" klicken, werden sie zurück zum Hauptamt geführt und ihr aktuelles Budget angezeigt. Wenn das erste Mal Geld zum Budget hinzugefügt wird, funktioniert es gut. Wenn ich jedoch mehr Geld hinzufügen möchte, wird der Budgetbetrag durch die neue Eingabe ersetzt, anstatt den bereits vorhandenen Betrag zu erhöhen. Hier ist der Code für Main:Wie kann ich einen Wert aktualisieren, ohne ihn zurückzusetzen?

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


public class MainActivity extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     float cashEarned = getIntent().getFloatExtra("income",0); 

     TextView textView = (TextView)findViewById(R.id.currentBudget); 
     String budget = "" + cashEarned; 
     textView.setText(budget); 


    } 

    public void expenseClick(View v) { 

     startActivity(new Intent(MainActivity.this, ExpensesActivity.class)); 

    } 

    public void incomeClick(View v){ 

     startActivity(new Intent(MainActivity.this,IncomeActivity.class)); 
      } 

    public void chartClick(View v){ 

     startActivity(new Intent(MainActivity.this,ChartsActivity.class)); 
    } 

    } 

Das Layout für Main:

Dies ist mein Code Geld für den Haushalt für das Hinzufügen von:

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class IncomeActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_income); 

     backToMainMenu(); 
    } 

    private void backToMainMenu() { 

     final EditText editTextIncome = (EditText)findViewById(R.id.moneyEarned); 


     Button incomeButton = (Button)findViewById(R.id.addIncomeScreen3); 
     incomeButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       float income = Float.parseFloat(editTextIncome.getText().toString()); 
       Intent intent = new Intent(getApplicationContext(),MainActivity.class); 
       intent.putExtra("income",income); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

Gibt es eine Möglichkeit ich hinzufügen können, um meine aktuelles Budget, ohne es jedes Mal zu ersetzen, wenn ein neuer Betrag eingegeben wird?

Antwort

2

Was Sie tun, ist im Wesentlichen nicht richtig. Sie erstellen weiterhin eine IncomeActivity aus der MainActivity. Sobald Sie mit der IncomeActivity fertig sind, erstellen Sie eine weitere MainActivity. Also, im Grunde erstellst du weiterhin Aktivitäten.

Was sollten Sie tun, ist eine IncomeActivity erstellen, dann das Ergebnis und finish die IncomeActivity gesetzt. Die MainActivity wird dann in der Lage sein, die Ergebnisse zu lesen. Auf diese Weise werden Sie keine unnötigen Activity Instanzen erstellen.

Sie sollten die startActivityForResult-Methode für solche Szenarien verwenden. Here ist die Dokumentation dazu.

1

überprüft Absicht Wert vorhanden ist oder nicht if(getIntent().getExtra() != null){

In der Haupttätigkeit folgender Code

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


public class MainActivity extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     if(getIntent().getExtra() != null){ 
      float cashEarned = getIntent().getFloatExtra("income",0); 

     TextView textView =  (TextView)findViewById(R.id.currentBudget); 
     String budget = "" + cashEarned; 
     textView.setText(budget); 
     } 

    } 

    public void expenseClick(View v) { 

     startActivity(new Intent(MainActivity.this, ExpensesActivity.class)); 

    } 

    public void incomeClick(View v){ 

     startActivity(new Intent(MainActivity.this,IncomeActivity.class)); 
      } 

    public void chartClick(View v){ 

     startActivity(new Intent(MainActivity.this,ChartsActivity.class)); 
    } 

    } 
Verwandte Themen