我看到了很多与我的问题非常相似的问题,但似乎没有任何效果,所以如果之前已经回答过,我深表歉意。
所以我有一个带有计算器的应用程序,它显示你自己卷烟可以节省多少钱。在计算器中,我有一系列用于输入的编辑文本框:您当前为一包香烟支付的金额、您所在州的税款、每天吸烟量、一袋烟草的成本和烟管的成本。点击计算后,它会告诉您当前为预制卷烟支付的费用与自己卷烟的费用。
存在的问题是有许多不同尺寸的烟草袋,所以要解决所有问题,它必须基于 6 盎司袋子。所以我开发的是一个工作表,用来计算你会为正确的金额支付多少。例如,如果我买一个 16 盎司的袋子,计算结果就不会正确,所以工作表会告诉你要为一袋 6 盎司的相同产品支付多少钱。
所以我不知道如何从我的工作表中获取新价格并将其放入计算器活动中。从我读到的 getText 和 setText 在活动之间不起作用。我还看到了 Intent 方法,您在其中 putExtras 从当前活动和 getExtras 在您希望它去的活动上。但我见过的每个例子都涉及开始一项新活动。当我只想获取并基本上复制工作表中的数字时,关闭工作表并将其放入我的计算器活动中。
我非常感谢您能给我的任何信息,因为我几个月来一直在寻找这个答案。好吧,我放弃了一段时间,现在我又回来了。如果您需要我发布代码或任何其他信息,请告诉我。
这是我的计算器。这是我想将新数字放入 editText(perbag) 的地方
public class Calculator extends Activity {
EditText perbag
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.calculator);
final MediaPlayer lighterFlick = MediaPlayer.create(this,
R.raw.lighter_sound);
// worksheet clickable textview
TextView initiateWorksheet = (TextView) findViewById(R.id.initiateWorksheet);
initiateWorksheet.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent("com.trhodes.saveonsmokes.WORKSHEET"));
}
});
这是从计算器活动中打开的工作表活动。因此,第一部分只是在“wsnewprice”中获取我需要的数字。所以在底部我有按钮“wsok”,这是我想要获取工作表的“wsnewprice”的地方,然后关闭工作表并将其放在上述计算器活动的editText“perbag”中。
public class Worksheet extends Activity{
EditText wspriceperbag = null;
EditText wsweight = null;
EditText wsnewprice = null;
Button wscalculate;
Button wsok;
double Wspriceperbag = 0.00D;
double Wsweight = 0.00D;
double Wsnewprice = 0.00D;
double ounce = 6;
public Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.worksheet);
wspriceperbag = (EditText) findViewById(R.id.wspriceperbag);
wsweight = (EditText) findViewById(R.id.wsweight);
wsnewprice = (EditText) findViewById(R.id.wsnewprice);
wscalculate = (Button) findViewById(R.id.wscalculate);
wsok = (Button) findViewById(R.id.wsok);
wscalculate.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
try {
Wspriceperbag = Double.parseDouble(wspriceperbag.getText()
.toString());
Wsweight = Double.parseDouble(wsweight.getText()
.toString());
} catch (NumberFormatException nfe) {
}
DecimalFormat localDecimalFormat = new DecimalFormat("#0.00");
Wsnewprice = (Wspriceperbag / Wsweight) * ounce;
wsnewprice.setText(localDecimalFormat.format(Wsnewprice));
}
});
wsok.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
现在这是我尝试使用的代码,但就像我说的我不想开始一项新活动,我只想去上一个活动。
to:
perbag.setText(getIntent().getExtras().getString("newprice"));
from:
Intent intent = new Intent(Worksheet.this, Calculator.class);
intent.putExtra("newprice",wsnewprice.getText().toString());
startActivity(intent);
如果这令人困惑,我很抱歉,我试图尽可能清楚。
编辑:对于我找到的解决方案
原始活动的新代码
//this is to start the worksheet
initiateWorksheet.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(Calculator.this, Worksheet.class);
startActivityForResult(i, 0);
//this is coming back to the original activity and placing the new data..
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK);
Bundle bundle = data.getExtras();
String s = bundle.getString("newprice");
perbag.setText(s);
工作表活动的新代码:
//this is getting the new number and putting it into a string
wsok.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent newNumber = new Intent();
Bundle bundle = new Bundle();
bundle.putString("newprice", wsnewprice.getText().toString());
newNumber.putExtras(bundle);
setResult(RESULT_OK, newNumber);
finish();
//had to add this because force close when hitting the back button
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
Intent newNumber = new Intent();
Bundle bundle = new Bundle();
bundle.putString("newprice", "");
newNumber.putExtras(bundle);
setResult(RESULT_OK, newNumber);
finish();
感谢您回复的每个人,如果没有你们,我仍然会拔头发。另外,如果有人对在没有最后一行代码的情况下按下后退按钮的强制关闭有任何建议,我会全力以赴。否则很酷,因为它实际上以我想要的方式工作。
谢谢,特拉维斯