在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中将值从一个窗口传递到另一个窗口的主要内容,如果未能解决你的问题,请参考以下文章
在 SWIFT 语言的 Storyboard 中将值从一个 ViewController 传递到另一个 ViewController
使用 Struts 2 在项目中将查询字符串中的键值从一个页面传递到另一个页面