我正在做一个项目,在这个项目中,我必须从一个活动中传输名称和值等数据



我正在处理一个项目,在该项目中,我必须从一个活动中传输名称和值等数据,并且该数据将显示在另一个活动的文本视图上,但每次我这样做时,都会显示这些变量的初始值,而不是在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"是用于标识要发送的数据的字符串常量,namevalue是所需类型的变量(有关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);

下次提问时,请尝试自己完成任务,并添加问题、您已经尝试过的内容和一些相关代码,以帮助我们理解您的问题。

最新更新