在android中将值从一个窗口传递到另一个窗口

Posted

技术标签:

【中文标题】在android中将值从一个窗口传递到另一个窗口【英文标题】:Passing value from one window to the another in android 【发布时间】:2011-08-02 00:02:39 【问题描述】:

我想将用户在第一个窗口中插入的值显示到下一个窗口。 我在第一个窗口中接受用户体重和身高,我想在第二个屏幕上将其显示为您的体重和身高。

我搜索了很多,甚至尝试了一个代码,但在模拟器 m 中出现强制关闭错误。

第一个活动:

public class BMI_Main extends Activity

  EditText BMI_weight;
  public String weight;
  public void onCreate(Bundle savedInstanceState) 
  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.bmi_main);
    Button submit =(Button)findViewById(R.id.BMI_submit);
    BMI_weight = (EditText)findViewById(R.id.BMI_EdTx_kg);
    submit.setOnClickListener(new View.OnClickListener() 
    
  public void onClick(View v) 
  
    weight = BMI_weight.getText().toString();
    // create a bundle
    Bundle bundle = new Bundle();
    // add data to bundle
    bundle.putString("wt", weight);
    // add bundle to the intent
    Intent intent = new Intent(v.getContext(), BMI_Result.class);
        intent.putExtras(bundle);
    startActivityForResult(intent, 0);
      
       
);

第二个活动:

public class BMI_Result extends Activity 

 TextView Weight = (TextView)findViewById(R.id.BMI_TxtVw_wt);
 public void onCreate(Bundle savedInstanceState) 
 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.bmi_result);

    //get the bundle
    Bundle bundle = getIntent().getExtras();
    // extract the data
    String weight = bundle.getString("wt");
    Weight.setText(weight);    
 

所以请帮帮我..

【问题讨论】:

我现在无法尝试代码,无论如何,检查LogCat中错误的堆栈跟踪,你应该找出问题所在(如果可以的话,调整你发布的代码的格式) 【参考方案1】:

您应该在您的第一个窗口/活动中使用 Context.startActivity(Intent intent) 方法。

将您想要传递给第二个窗口/活动的数据存储在 Intent 对象中,例如:

Intent intent = new Intent();
intent.putExtra("weight", weight);
intent.putExtra("height", height);
this.startActivity(intent);

并在 onCreate 方法的第二个屏幕/Activity 中检索它们,例如:

Intent intent = getIntent(); // This is the intent you previously created.
int weight = intent.getExtra("weight");
int height = intent.getExtra("height");

【讨论】:

在写入 Context.startActivity(Intent intent) 和 this.startActivity(intent) 后显示错误,我想调用下一页所以我没有收到。【参考方案2】:

你应该重写 onCreate()

@Override
public void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);

而且onCreate末尾的token是错误的。

【讨论】:

很高兴我能帮上忙。您似乎是 Stack Overflow 的新手。如果他们用答案旁边的复选标记回答您的问题,请不要忘记接受答案。它有助于那些提供帮助的人的声誉和您自己的声誉。欢迎来到 SO。【参考方案3】:

据我所知,BMI_Result 中有以下 member 定义:

TextView Weight = (TextView)findViewById(R.id.BMI_TxtVw_wt); 

但是你只能在类初始化之后调用findViewById,因为它是View类的成员函数,所以把这行改成:

TextView Weight;

并在setContentView(...) 之后将此行添加到onCreate 方法中:

Weight = (TextView)findViewById(R.id.BMI_TxtVw_wt);

编辑:它说“...在super.onCreate(...) 之后”,现在是正确的;)

【讨论】:

嘿,它现在可以工作了,只要我重写我的 onCreate 方法,它就可以工作了。谢谢你的帮助....

以上是关于在android中将值从一个窗口传递到另一个窗口的主要内容,如果未能解决你的问题,请参考以下文章

在角度js中将值从一个控件传递到另一个控件[重复]

在 SWIFT 语言的 Storyboard 中将值从一个 ViewController 传递到另一个 ViewController

使用 Struts 2 在项目中将查询字符串中的键值从一个页面传递到另一个页面

如何在iphone中将值从一个标签栏传递到另一个标签栏

android ListView 将隐藏值从一个 Activity 传递到另一个

在 EclipseWindowBuilder 中将数据从一个窗口文本区域显示到另一个窗口文本区域