我想在这里展示的是我试图将活动A中的数据传递给活动B.活动A主要有3个文本框供我输入,然后按一个按钮转到活动B(确认页面) )在活动B中,我能够显示我在活动A中键入的内容。我是Android的新手,那么有人可以指导我完成此操作吗?
在活动A中
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitya);
Textview01 = (EditText) this.findViewById(R.id.txtView1);
Textview02 = (EditText) this.findViewById(R.id.txtView2);
Textview03 = (EditText) this.findViewById(R.id.txtView3);
mButton = (Button) findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.putExtra("Textview01", txtView1.getText().toString());
i.putExtra("Textview02", txtView2.getText().toString());
i.putExtra("Textview03", txtView3.getText().toString());
startActivity(i);
在活动B中。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.confirmbooking);
TextView txtPickup = (TextView) this.findViewById(R.id.txtPickup);
TextView txtLocation = (TextView) this.findViewById(R.id.txtLocation);
TextView txtDestination = (TextView) this.findViewById(R.id.txtDestination);
txtLocation.setText(getIntent().getStringExtra("Location"));
txtPickup.setText(getIntent().getStringExtra("Pick Up Point"));
txtDestination.setText(getIntent().getStringExtra("Destination"));
在我的Activity B XML中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="txtView01:" />
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/txtView01"></TextView>
<TextView android:id="@+id/TextView02" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="txtView02:"></TextView>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/txtView02"></TextView>
<TextView android:id="@+id/TextView02" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="txtView03:"></TextView>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/txtView03"></TextView>
<Button android:id="@+id/btnButton" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:text="Book now" />
</LinearLayout>
有人可以告诉我这是否正确?我收到一些错误,如弹出的Instrumental.class。
LogCat显示:
11-26 17:27:40.895: INFO/ActivityManager(52): Starting activity: Intent { cmp=ActivityA/.ActivityB (has extras) }
11-26 17:27:42.956: DEBUG/dalvikvm(252): GC_EXPLICIT freed 156 objects / 11384 bytes in 346ms
11-26 17:27:47.815: DEBUG/dalvikvm(288): GC_EXPLICIT freed 31 objects / 1496 bytes in 161ms
答案 0 :(得分:1)
更改为
<强> A 强>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitya);
EditText Textview01 = (EditText) findViewById(R.id.txtView1);
EditText Textview02 = (EditText) findViewById(R.id.txtView2);
EditText Textview03 = (EditText) findViewById(R.id.txtView3);
Button mButton = (Button) findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.putExtra("Textview01", Textview01 .getText().toString());
i.putExtra("Textview02", Textview02 .getText().toString());
i.putExtra("Textview03", Textview03 .getText().toString());
startActivity(i);
<强>乙强>
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityb);
TextView txtView01 = (TextView) findViewById(R.id.txtView01);
TextView txtView02 = (TextView) findViewById(R.id.txtView02);
TextView txtView03 = (TextView) findViewById(R.id.txtView03);
String s1 = getIntent().getStringExtra("Textview01");
String s2 = getIntent().getStringExtra("Textview02");
String s3 = getIntent().getStringExtra("Textview03");
txtView01.setText(s1);
txtView02.setText(s2);
txtView03.setText(s3);
答案 1 :(得分:0)
首先你做:
txtView01 = (TextView) this.findViewById(R.id.txtView01);
然后你重新声明这个变量:
String txtView01 = getIntent().getStringExtra("Textview01");
这是一个错误,应该阻止你甚至尝试它。我猜你忘了展示一些代码,比如;在String声明之前,声明了txtView01
,以及如何?
答案 2 :(得分:0)
创建Button类型的变量。然后实现onClickListener。
Button bt1=(Button) findViewById(R.id.button);
或
更改为活动B中的所有字符串赋予的变量名称。
答案 3 :(得分:0)
你做过像
txtView01 = (TextView) this.findViewById(R.id.txtView01);
txtView02 = (TextView) this.findViewById(R.id.txtView02);
txtView03 = (TextView) this.findViewById(R.id.txtView03);
然后将文本分配给TextView,以便您解决问题
你需要制作3个String变量并分配给它,
像String str1,str2,str3 ..
str1 = getIntent().getStringExtra("Textview01");
str2 = getIntent().getStringExtra("Textview02");
str3 = getIntent().getStringExtra("Textview03");
然后将Text设置为TextView 等,
txtView01.setText(str1);