java - Android Java - 使用意图将值传递给第二个活动
问题描述
我正在编写一个跟踪您的体重和 BMI 的 Android 应用程序。为了第一次更新或设置这两个值,有第二个活动允许我输入应该传递给第一个活动的值。
我试图通过几种方式实现这一点,我得到的最接近的是下面的代码:
第二个活动:(UpdateProgressActivity.java)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_body_progress);
Intent intentWeight = getIntent();
String WeightText = intentWeight.getStringExtra(EXTRA_MESSAGE);
TextView messageWeight = findViewById(R.id.weight);
messageWeight.setText(WeightText);
Intent intentBMI = getIntent();
String BMIText = intentBMI.getStringExtra(EXTRA_MESSAGE);
TextView messageBMI = findViewById(R.id.bmi);
messageBMI.setText(BMIText);
updateButton = findViewById(R.id.updateBodyProgress);
updateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openActivityUpdateProgress();
}
});
}
第一个活动:(BodyProgressActivity.java)
public class UpdateProgressActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_progress);
Button confirmProgress;
confirmProgress = findViewById(R.id.confirmBodyStatus);
confirmProgress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
returnToActivityProgress();
}
});
}
protected void returnToActivityProgress() {
Intent intent = new Intent(this, BodyProgressActivity.class);
startActivity(intent);
}
public void createStatus(View view) {
EditText messageWeight = findViewById(R.id.textNewWeight);
String textWeight = messageWeight.getText().toString();
Intent intentWeight = new Intent(Intent.ACTION_SEND); intentWeight.setType("text/plain");
intentWeight.putExtra(Intent.EXTRA_TEXT, textWeight);
String textWeigthTemp = getString(R.string.currentWeight);
Intent chosenIntentWeight = Intent.createChooser(intentWeight, textWeigthTemp);
startActivity(chosenIntentWeight);
EditText messageBMI = findViewById(R.id.textNewWeight);
String textBMI = messageBMI.getText().toString();
Intent intentBMI = new Intent(Intent.ACTION_SEND); intentBMI.setType("text/plain");
intentWeight.putExtra(Intent.EXTRA_TEXT, textBMI);
String textBMITemp = getString(R.string.currentBMI);
Intent chosenIntentBMI = Intent.createChooser(intentWeight, textBMITemp);
startActivity(chosenIntentBMI);
}
}
我从第二个活动中获取“ textNewWeight ”和“ textNewBMI ”的值,并且必须在第一个活动中将它们传递给“ weight ”和“ bmi ”。我在第一个活动中得到的只是空白。
解决方案
在第一个活动中。使用此代码。我们正在使用 putExtra 方法通过键和值将数据发送到下一个活动。键是第一个参数,值是第二个参数。键名可以是您的选择,它用于在第二个活动中检索数据。值是您希望发送到下一个活动的数据。
Intent i=new Intent(firstactivity.this,secondactivity.class);
String weight=messageWeight.getText().toString();
i.putExtra(“weight”,weight);
startActivity(i);
在第二个活动中,使用它来接收数据。
Bundle b=getIntent().getExtras();
String recievedWeight=b.getString(“weight”);
b.getString(“”) 中的参数名称必须与您在第一个活动中声明的名称相同。
推荐阅读
- selenium - 通过 Firefox 与 Selenium WebDriver (GeckoDriver) 运行之间的区别
- go - 在 golang gin 中显示基于用户的静态图像
- webdatarocks - Webdatarocks 文件大小限制问题
- reactjs - 如何在 TypeScript 文件中接收任何元素作为 ReactChild?
- python - 从证券交易所网站的买卖列中提取信息
- firebase - Flutter Firebase StreamBuilder 列表
> 不是 - > 错误
- c# - 检查 API 数据的条件列表
- python - Python Regex 返回包含双字符的单词
- jestjs - `transformIgnorePatterns` 无法包含一些 node_modules
- python - 将元素附加到 Ragged 张量?