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

时间:2011-04-09 08:03:01

标签: android pass-by-value

我想在第一个窗口中显示用户插入到下一个窗口的值 我接受用户重量&在第一个窗口中的高度,我想在第二个屏幕上显示它作为你的重量&高度。

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

第一项活动:

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);    
 }

所以请帮助我..

3 个答案:

答案 0 :(得分:2)

据我所见,您在BMI_Result中有以下成员定义:

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

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

TextView Weight;

并在onCreate

之后立即将此行添加到setContentView(...)方法
Weight = (TextView)findViewById(R.id.BMI_TxtVw_wt);

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

答案 1 :(得分:1)

你应该覆盖onCreate()

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

onCreate末尾的令牌是错误的。

答案 2 :(得分:1)

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

将要传递的数据存储到Intent对象中的第二个窗口/ Activity,例如:

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");