2016-03-29 17 views
0

Basit bir bütçe uygulaması üzerinde çalışıyorum ama bütçe miktarını güncelleme ile ilgili sorunlar yaşıyorum. Ana ekranımda kullanıcı, bütçesine gelir ekleyebilecekleri farklı bir etkinliğe götürecek bir düğmeyi tıklayabilir. Gelir ekle düğmesine bastıklarında, onları tekrar Ana'ya götürecek ve mevcut bütçelerini gösterecek. Bütçeye ilk kez para eklendiğinde para cezası eklenir, ancak daha fazla para eklemek istersem, bütçe tutarı, zaten var olan miktarın arttırılması yerine yeni girdiyle değiştirilir. Main içinBir değeri sıfırlamadan nasıl güncelleyebilirim?

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

    } 

düzen: Bu bütçeye para ekleme kodum

: İşte Main kodudur

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

ben ekleyebileceğiniz bir yolu var mı benim Mevcut bütçe yeni bir miktar her girildiğinde değiştirilmeden mi?

cevap

2

Yaptığınız şey aslında doğru değil ana faaliyeti için kod aşağıdaki. MainActivity'dan IncomeActivity oluşturmaya devam edersiniz. Bir kez IncomeActivity ile bitti, başka bir MainActivity oluşturun. Yani, temelde aktiviteler yaratmaya devam ediyorsun.

Yapman gereken sonucu ve finishIncomeActivity set sonra, oluşturduğunuz bir IncomeActivity olduğunu. MainActivity daha sonra sonuçları okuyabilecek. Bu şekilde gereksiz Activity örnekleri oluşturmazsınız.

Böyle bir senaryo için startActivityForResult yöntemini kullanmalısınız. Here bununla ilgili belgelerdir.

1

Kontrol niyet değeri yok veya if(getIntent().getExtra() != null){

Ekleme

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

    } 
İlgili konular