我正在处理一个项目,在该项目中,我必须从一个活动中传输名称和值等数据,并且该数据将显示在另一个活动的文本视图上,但每次我这样做时,都会显示这些变量的初始值,而不是在Java类活动中更新的当前值。请注意,这是在android studio上,我只是一个即将成为程序员的人,请宽容。
我使用了set和get静态方法、意图和bundle,但它仍然显示初始值,而不是当前值
这是代码
package com.example.android.bmi;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class Main2Activity extends AppCompatActivity {
private String name;
private int year;
private double BMI;
public String Diag;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2);}
public void setName(){
EditText nameF = (EditText)findViewById(R.id.name);
name = nameF.getText().toString();
}
public String getName() { return name;}
public void setYear(){
EditText yearF = (EditText)findViewById(R.id.year);
String value = yearF.getText().toString();
year = Integer.parseInt(value);
}
public void setAge() { age = 2018 - year;}
public void setBMI(){
EditText heightF = (EditText)findViewById(R.id.height);
String value = heightF.getText().toString();
height = Integer.parseInt(value);
EditText weightF = (EditText)findViewById(R.id.weight);
String value1 = weightF.getText().toString();
weight = Integer.parseInt(value);
BMI = (weight*567)/(height*height);
}
public String getDiag(){
Diag = "Name: " + name;
Diag += "nYear of Birth: " + year;
Diag += "nAge: " + age;
Diag += "nBMI" + BMI;
return Diag;
}public void mainN(View view) {
String bread = getDiag();
Bundle basket = new Bundle();
basket.putString("key", bread);
Intent a = new Intent(Main2Activity.this, Main3Activity.class); a.putExtras(basket);
startActivity(a);
}}
并且接收活动是
package com.example.android.bmicalculator;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class Main3Activity extends AppCompatActivity {
String display;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3);
TextView tv = (TextView)findViewById(R.id.info);
Bundle gotBasket = getIntent().getExtras();
display = gotBasket.getString("key");
tv.setText(display); }
似乎需要帮助将数据从一个活动传递到另一个活动。
在发件人活动中,启动其他活动时使用以下代码-
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("NAME", name);
intent.putExtra("VALUE", value);
startActivity(intent);
这里,"NAME"
和"VALUE"
是用于标识要发送的数据的字符串常量,name
和value
是所需类型的变量(有关putExtra()
方法的列表,请参阅文档(。
现在,在您的接收活动中,您希望在哪里获取数据。使用像getIntent().getStringExtra(String name);
这样的方法来获取String,或者使用getIntent().getIntExtra(String name, int defaultValue);
来获取int(这里列出了其他可用的方法(。例如
String name = getIntent().getStringExtra("NAME");
int value = getIntent().getIntExtra("VALUE",0);
textView.setText(name);
下次提问时,请尝试自己完成任务,并添加问题、您已经尝试过的内容和一些相关代码,以帮助我们理解您的问题。