检索第二页上的数据并停止第一页上的活动

时间:2014-02-07 09:31:28

标签: android android-activity

我正在尝试从第一页(并停止活动)向第二页发送一些数据,我可以转到下一页但我不知道如何检索信息。 另外,onClickListener是我自己写的,我听说我可以从属性窗口设置它,但当我点击我的属性窗口时,它只是突出显示蓝色,我无法编辑任何内容。
编辑:我根据答案将我的代码更改为下面,它显示距离= 0.0所以我只需将dis作为我的texview的文本值,显示我想要的值。它显示距离:第二页的值..

//first page.when press this button, stop activity and go to next page
btnStop.setOnClickListener(new OnClickListener() 
    {
        @Override
        public void onClick(View v) {
            startButtonClicked=false;
            startDistance=false;
            String dis = (String) distance.getText();//get the value i wanted into a string
            Intent intent = new Intent(MainActivity.this, FinishActivity.class);
            intent.putExtra("dis","value");
            startActivity(intent);
            finish();
        }
    });

此代码允许我转到FinishActivity页面 但是,当我是下一页时,有一个问题

它只显示单词Distance:value。另外我还有两个可变速度,发送持续时间,所以我如何在Intent上写这个? 谢谢你们俩告诉我使用Finish();第一项活动确实停止了。但我不能回去。所以我创建另一个没有数据传递的意图只是回去?

    //second page(FinishActivity)
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_finish);
    Bundle extras = getIntent().getExtras();
    if (extras != null) 
    {
        String value = extras.getString("dis");
        displayDistance=(TextView)findViewById(R.id.finishDistance);
        displayDistance.setText("Distance: " + value);
    }
}

3 个答案:

答案 0 :(得分:2)

试试这个

btnStop.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) {
        startButtonClicked=false;
        startDistance=false;
        Intent intent = new Intent(MainActivity.this, FinishActivity.class);
        intent.putExtra("dist","value");
        startActivity(intent);
        finish();
    }
});

在第二页你必须致电Double value = extras.getDouble("dist");

//第二页(FinishActivity)

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_finish);
Bundle extras = getIntent().getExtras();
if (extras != null) {
    Double value = extras.getDouble("dist");  // change here
}
displayDistance=(TextView)findViewById(R.id.finishDistance);
displayDistance.setText("Distance: " + value); // and here
}

答案 1 :(得分:0)

密钥必须匹配

Double value = extras.getDouble("dist");

它也在if块中声明和初始化。

Double value; // declared
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_finish);
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
       value = extras.getString("dist"); // keys must match
    }
    displayDistance=(TextView)findViewById(R.id.finishDistance);
    displayDistance.setText(value); // if you want the value displayed

要在第一个活动中停止活动,请在第一个活动中停止finish()

编辑:

it just display the word Distance

它是您传递的字符串,它在第二个活动

中显示字符串
also i have two more variable speed, duration to send, so how do i write that on the Intent?

使用intent并传递botth变量速度和持续时间,并以与intent.puExtra("speed","speedvalue");之前相同的方式检索它并检索String speed =extras.getString("speed");。请注意您传递字符串或整数或双精度数据的类型。

but i cannot go back. so i create another intent without data passing to just go back?

如果您想返回,请不要在第一个finish()中致电Activity

答案 2 :(得分:0)

假设您要将值存储在EditText中。然后在主要活动:

String string=Edittxt.getEditableText().toString()
Intent intent = new Intent(MainActivity.this, FinishActivity.class);
intent.putExtra("any name",string);
startActivity(intent);
finish(); // to stop

第二项活动:

Intent intent=getIntent();
String string = intent.getStringExtra("any name");
displayDistance.setText(string);