我尝试使用简单的预算应用程序但是在更新预算金额方面存在问题。在我的主屏幕上,用户可以点击一个按钮,将他们带到一个不同的活动,在那里他们可以增加预算收入。按下“添加收入”按钮后,它会将它们带回Main并显示其当前预算。第一次将钱添加到预算中它工作正常,但是,如果我想增加更多钱,预算金额将被新输入替换而不是增加已经存在的金额。以下是Main的代码:
get_params
Main的布局:
这是我为预算增加资金的代码:
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));
}
}
有没有一种方法可以添加到我当前的预算而不必在每次输入新金额时都替换它?
答案 0 :(得分:2)
你正在做的事情本质上是不对的。您继续从IncomeActivity
创建MainActivity
。完成IncomeActivity
后,您可以创建另一个MainActivity
。所以,基本上你一直在创造活动。
您应该做的是创建IncomeActivity
,然后设置结果,finish
创建IncomeActivity
。然后MainActivity
将能够阅读结果。这样您就不会创建不必要的Activity
实例。
对于这样的场景,您应该使用startActivityForResult方法。 Here是关于此的文档。
答案 1 :(得分:1)
检查意图值是否存在if(getIntent().getExtra() != null){
将以下代码添加到主要活动
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));
}
}