2016-03-29 8 views
0

私は単純な予算アプリケーションで作業しようとしていますが、予算額の更新に問題があります。私のメイン画面では、ユーザーはボタンをクリックすることができます。ボタンをクリックすると、予算に収入を追加するさまざまなアクティビティが表示されます。収入追加ボタンを押すと、メインに戻り、現在の予算を表示します。最初の時間にお金が追加されても、それはうまくいきますが、もし私がもっとお金を追加したいのであれば、既にある金額を増やすのではなく、新しい金額に置き換えられます。メインのためリセットせずに値を更新するにはどうすればよいですか?

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

    } 

レイアウト::これは予算にお金を追加するための私のコード

である:ここではメインのコードです

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

は、私が追加できる方法があり、私の新しい金額を入力するたびに現在の予算を交換せずに

答えて

2

を次のコードを追加します。存在しないかではないif(getIntent().getExtra() != null){

は基本的に適切ではありません。 MainActivityからIncomeActivityを作成し続けます。 IncomeActivityを入力したら、別のMainActivityを作成します。ですから、基本的に活動を続けています。あなたは何をすべき

IncomeActivityを作成され、その後、は結果finishIncomeActivityを設定します。 MainActivityは結果を読み取ることができます。この方法で不要なActivityインスタンスを作成することはありません。

このようなシナリオでは、startActivityForResultメソッドを使用する必要があります。 Hereはそれに関する文書です。

1

チェック意図値が何をやっている主な活動に

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

    } 
関連する問題