我正在尝试从第一页(并停止活动)向第二页发送一些数据,我可以转到下一页但我不知道如何检索信息。
另外,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);
}
}
答案 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);