[英]How to pass int value on button click from one activity to another?
[英]How to get an EditText value to go from one activity to another as an int
正如标题所示,我试图从 EditText 字段中获取值并将它们(返回)作为修改后的 int 值发送到另一个活动,以便与按钮一起使用。 该方案的概念如下:
第一个活动包含一个小费计算器,并且有一个按钮可以让您更新每种小费类型(优秀、平均、缺乏)的小费金额。 第二个活动允许您查看此 (20, 18, 14) 的原始值并修改它们。 我都写了,我可以提取值,但我不知道为什么它不编辑它们,代码如下:
添加说明:第一个活动有一个您可以单击的按钮,您可以单击该按钮来引导第二个活动,然后您可以从那里编辑原始提示值(一个或全部),并且您可以单击一个按钮来更新它们(他们不应该更新)。 我不明白为什么我的代码不这样做。
package com.example.lab2;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
int excellent_tip = 20;
int average_tip = 18;
int bad_tip = 14;
Button update_button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
update_button = findViewById(R.id.update_button);
update_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent (MainActivity.this, MainActivity2.class);
Bundle extras = new Bundle();
extras.putString("excellent_value", excellent_tip + "");
extras.putString("average_value", average_tip + "");
extras.putString("lacking_value", bad_tip + "");
intent.putExtras(extras);
startActivity(intent);
}
});
Intent intent = getIntent();
int excelVal = intent.getIntExtra(MainActivity2.excellNewVal, 20);
int avgVal = intent.getIntExtra(MainActivity2.avgNewVal, 18);
int lackVal = intent.getIntExtra(MainActivity2.lackNewVal, 14);
excellent_tip = excelVal;
average_tip = avgVal;
bad_tip = lackVal;
}
@SuppressLint("NonConstantResourceId")
public void onRadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
float bill;
// Check which radio button was clicked
switch (view.getId()) {
case R.id.excellent_button:
if (checked) {
EditText b = (EditText)findViewById(R.id.bill);
if (b.getText().toString().equals(""))
bill = 0;
else bill = Float.parseFloat(b.getText().toString());
compute_tip(bill, excellent_tip);
}
break;
case R.id.average_button:
if (checked) {
EditText b = (EditText)findViewById(R.id.bill);
if (b.getText().toString().equals(""))
bill = 0;
else bill = Float.parseFloat(b.getText().toString());
compute_tip(bill, average_tip);
}
break;
case R.id.lacking_button:
if (checked) {
EditText b = (EditText)findViewById(R.id.bill);
if (b.getText().toString().equals(""))
bill = 0;
else bill = Float.parseFloat(b.getText().toString());
compute_tip(bill, bad_tip);
}
break;
}
}
@SuppressLint("DefaultLocale")
public static String roundToTwoDigit(float paramFloat) {
return String.format("%.2f%n", paramFloat);
}
void compute_tip(float bill, int percent) {
float pct= (float)percent/100;
float tip = bill * pct;
float total = bill + tip;
TextView t = (TextView)findViewById(R.id.computed_tip);
String s = roundToTwoDigit(tip);
t.setText(s);
t = (TextView)findViewById(R.id.bill_total);
s = roundToTwoDigit(total);
t.setText(s);
}
}
这是第二个活动:
package com.example.lab2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity2 extends AppCompatActivity {
EditText excellent_input, average_input, lacking_input;
Button update_tip;
int excellentTip, averageTip, lackingTip;
public static String excellNewVal, avgNewVal, lackNewVal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
excellent_input = findViewById(R.id.excellent_input);
average_input = findViewById(R.id.average_input);
lacking_input = findViewById(R.id.lacking_input);
Bundle extras = getIntent().getExtras();
String excellentVal = extras.getString("excellent_value");
excellentTip = Integer.parseInt(excellentVal);
String averageVal = extras.getString("average_value");
averageTip = Integer.parseInt(averageVal);
String lackingVal = extras.getString("lacking_value");
lackingTip = Integer.parseInt(lackingVal);
excellent_input.setHint(excellentVal);
average_input.setHint(averageVal);
lacking_input.setHint(lackingVal);
update_tip = findViewById(R.id.update_tip);
update_tip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity2.this, MainActivity.class);
String input1 = excellent_input.getText().toString();
if (input1.length() != 0) {
excellentTip = Integer.parseInt(input1);
intent.putExtra("excellNewVal", excellentTip);
}
else intent.putExtra("excellNewVal", 20);
String input2 = average_input.getText().toString();
if (input2.length() != 0) {
averageTip = Integer.parseInt(input2);
intent.putExtra("avgNewVal", averageTip);
}
else intent.putExtra("avgNewVal", 18);
String input3 = lacking_input.getText().toString();
if (input2.length() != 0) {
lackingTip = Integer.parseInt(input3);
intent.putExtra("lackNewVal", lackingTip);
}
else intent.putExtra("lackNewVal", 14);
}
});
}
}
不知道我做错了什么。
你需要使用onActivityResult,你做错了! 在您的第一个活动中,而不是调用startActivity(intent);
, 使用startActivityForResult(intent, requestCode);
. 在您将数据重新传递给第一个活动的第二个活动中,您使用setResult(RESULT_OK, intent)
,您的意图应该包含您修改的数字。 让我们回到第一个活动,您需要覆盖onActivityResult
,并在其中获取数据。 看看你的代码应该是怎样的: MainActivity1:
public class MainActivity extends AppCompatActivity {
int excellent_tip = 20;
int average_tip = 18;
int bad_tip = 14;
Button update_button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
update_button = findViewById(R.id.update_button);
update_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent (MainActivity.this, MainActivity2.class);
Bundle extras = new Bundle();
intent.putExtra("excellent_tip", excellent_tip + "");
intent.putExtra("average_tip", average_tip + "");
intent.putExtra("bad_tip", bad_tip + "");
startActivityForResult(intent, 1);
}
});
excellent_tip = 20;
average_tip = 18;
bad_tip = 14;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK){
Intent intent = getIntent();
excellent_tip = Integer.parseInt(data.getStringExtra("excellNewVal"));
average_tip = Integer.parseInt(data.getStringExtra("avgNewVal"));
bad_tip = Integer.parseInt(data.getStringExtra("lackNewVal"));
}
}
}
主要活动2:
public class MainActivity2 extends AppCompatActivity {
EditText excellent_input, average_input, lacking_input;
Button update_tip;
int excellentTip, averageTip, lackingTip;
public static String excellNewVal, avgNewVal, lackNewVal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
excellent_input = findViewById(R.id.excellent_input);
average_input = findViewById(R.id.average_input);
lacking_input = findViewById(R.id.lacking_input);
Intent intent = getIntent();
String excellentVal = intent.getExtras().getString("excellent_tip");
excellentTip = Integer.parseInt(excellentVal);
String averageVal = intent.getExtras().getString("average_tip");
averageTip = Integer.parseInt(averageVal);
String lackingVal = intent.getExtras().getString("bad_tip");
lackingTip = Integer.parseInt(lackingVal);
excellent_input.setHint(excellentVal);
average_input.setHint(averageVal);
lacking_input.setHint(lackingVal);
update_tip = findViewById(R.id.update_tip);
update_tip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
String input1 = excellent_input.getText().toString();
if (input1.length() != 0) {
intent.putExtra("excellNewVal", input1);
}
else intent.putExtra("excellNewVal", "20");
String input2 = average_input.getText().toString();
if (input2.length() != 0) {
intent.putExtra("avgNewVal", input2);
}
else intent.putExtra("avgNewVal", "18");
String input3 = lacking_input.getText().toString();
if (input2.length() != 0) {
intent.putExtra("lackNewVal", input3);
}
else intent.putExtra("lackNewVal", "14");
setResult(RESULT_OK, intent);
finish();
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.