如何使用意图将用户输入数据从一个活动发送到另一个活动

时间:2014-08-23 14:30:58

标签: java android eclipse android-intent android-activity

以下代码是第三第四活动的源代码。第三个活动接收用户输入并对其执行数学运算。然后将原始值和已处理值都发送到需要显示的第四个活动。我对使用意图并不十分熟悉。有人可以查看我的代码吗?它不起作用。

第三项活动

public class Third extends Activity {

double x=0, val1=0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.third);

    final EditText et;
    final Button b;

    et = (EditText) findViewById(R.id.editText1);
    b = (Button) findViewById(R.id.button1);

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Third.this, Fourth.class);
            intent.putExtra("thetext", et.getText().toString());
            startActivity(intent);

            x=Double.parseDouble(et.getText().toString());

            val1=(x*.04);

            Intent in1 = new Intent(Third.this, Fourth.class);
            in1.putExtra("thevalue1",val1);
            startActivity(in1);

        }


  });

}
}

第四项活动:

public class Fourth extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fourth);

    TextView tv = (TextView) findViewById(R.id.textView1);
    tv.setText(getIntent().getExtras().getString("thetext"));


    TextView wt1=(TextView) findViewById(R.id.textView12);
    wt1.setText(getIntent().getExtras().getDouble("thevalue1"));
} 

}

3 个答案:

答案 0 :(得分:2)

您需要将两个额外内容放入一个Intent,并且只需拨打startActivity(...)一次。更改第三个Activity的代码(在onClick(...)方法中),如下所示......

Intent intent = new Intent(Third.this, Fourth.class);
intent.putExtra("thetext", et.getText().toString());
x=Double.parseDouble(et.getText().toString());
val1=(x*.04);
intent.putExtra("thevalue1",val1);
startActivity(intent);

答案 1 :(得分:1)

您正在开始两项不同的活动。我认为您想要的是设置多个intent extras然后开始活动:

@Override
public void onClick(View v) {
    Intent intent = new Intent(Third.this, Fourth.class);

    intent.putExtra("thetext", et.getText().toString());

    x=Double.parseDouble(et.getText().toString());
    val1=(x*.04);
    intent.putExtra("thevalue1",val1);

    startActivity(intent);
}

在您的示例中,您只启动了一项仅包含文本的活动,另一项只启动了双重。然而,在这两项活动中,您都试图获得两者的值。

另请注意,对于最终变量,您需要在声明时设置它们:

final EditText et = (EditText) findViewById(R.id.editText1);
final Button b = (Button) findViewById(R.id.button1);

答案 2 :(得分:0)

在第四项活动中这样做

TextView tv = (TextView) findViewById(R.id.textView1);
    tv.setText(getIntent().getStringExtra("thetext"));


    TextView wt1=(TextView) findViewById(R.id.textView12);
    wt1.setText(getIntent().getDoubleExtra("thevalue1"));

getExtras()方法用于捆绑,您存储在意图

中的第三个活动中
in1.putExtra("thevalue1",val1);