首页 > 解决方案 > 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 ”。我在第一个活动中得到的只是空白。

标签: javaandroidandroid-intent

解决方案


在第一个活动中。使用此代码。我们正在使用 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(“”) 中的参数名称必须与您在第一个活动中声明的名称相同。


推荐阅读