标签:
前面一篇博文中,我们通过demo演示了意图回传数据的方法,鉴于意图回传数据比较重要,这篇文章我们继续通过一个demo来演示这种行为。
这个demo中,我们在Other这个activity当中,输入用户名和密码,用户点击返回按钮,回到MainActivity的时候,将用户名和密码回传回来,并且显示在MainActivity的TextView中。
1、在activity_main.xml中,添加TextView和Button。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/tv01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/btn01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="获取用户名和密码"/>
</LinearLayout>
2、新建other.xml,添加两个EditText和一个Button,用于输入用户名和密码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText android:id="@+id/ed01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
<EditText android:id="@+id/ed02"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
<Button android:id="@+id/btn01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="返回"></Button>
</LinearLayout>
3、在Other.java中,我们得到用户输入的用户名和密码,并且声明一个意图,通过putExtra()方法传递用户名和密码。
package com.example.intentback2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Other extends Activity {
private EditText ed01;
private EditText ed02;
private Button btn01;
public static final String KEY_USER_ID = "KEY_USER_ID";
public static final String KEY_USER_PASSWORD = "KEY_USER_PASSWORD";
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
ed01 = (EditText)this.findViewById(R.id.ed01);
ed02 = (EditText)this.findViewById(R.id.ed02);
btn01 = (Button)this.findViewById(R.id.btn01);
btn01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra(KEY_USER_ID, ed01.getText().toString());
intent.putExtra(KEY_USER_PASSWORD, ed02.getText().toString());
setResult(RESULT_OK,intent);
finish();
}
});
}
}
4、在MainActivity中,声明意图并且通过getStringExtra()方法获取从前一个页面传过来的用户名和密码。
package com.example.intentback2;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
private TextView tv01;
private Button btn01;
public final int REQUEST = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv01 = (TextView)this.findViewById(R.id.tv01);
btn01 = (Button)this.findViewById(R.id.btn01);
btn01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,Other.class);
startActivityForResult(intent, REQUEST);
}
});
}
@Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
// TODO Auto-generated method stub
/**
* arg0:requestCode arg1:resultCode arg2:data
*/
super.onActivityResult(arg0, arg1, arg2);
if(arg0 == REQUEST && arg1 == RESULT_OK) {
String str = "账号:" + arg2.getStringExtra(Other.KEY_USER_ID)+ "\n"
+ "密码:" + arg2.getStringExtra(Other.KEY_USER_PASSWORD);
tv01.setText(str);
}
Toast.makeText(MainActivity.this,
"requestCode = " + arg0 + "resultCode = " + arg1 , Toast.LENGTH_LONG).show();
}
}
注意,从MainActivity中我们通过定义REQUEST=1来设置请求码,然后通过startActivityForResult(intent, REQUEST);方法来启动意图,进入Other这个activity。返回来的时候,Android回调onActivityResult方法,我们通过判断REQUEST和请求结果码(RESULT_OK)来接收传回来的值。
标签:
原文地址:http://blog.csdn.net/sz_vcp2007/article/details/51334631