【一】看一个项目中,好多类中接连出现了onActivityResult,和 startActivityForResult(intent, 200); 这样的方法。和平时见到的Intent启动不太一样。那应该怎么用呢?以下是我的学习笔记
【二】新建一个MainActivity类,懒了就不用改类名吧。代码如下
public class MainActivity extends Activity {
private Button mbutton;
private TextView TextView_result;
private LinearLayout layout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout = (LinearLayout) findViewById(R.id.layout_result);
TextView_result=(TextView) findViewById(R.id.text_result);
mbutton=(Button) findViewById(R.id.button);
mbutton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,MainActivity2.class);
//注意,这里不再是使用以往的startActivity(intent);来启动
//并设置一个发送码为100的Intent ,MainActivity2中的Intent如果读取到执行码为100intent,可以获取相关数据和操作
startActivityForResult(intent, 100);
}
});
}
/* (non-Javadoc)
* @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
* 重写onAcitivityResult方法
* 在MainActivity2 这个类执行完相关的操作,并结束回到本MainActivity类的时候,以下方法将获取到传递回来的信息
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
//可以根据多个请求代码来作相应的操作
//获取返回执行码为20的 Intent传递的数据
if(20==resultCode) {
String name=data.getExtras().getString("Name");
String age=data.getExtras().getString("Age");
TextView_result.setText("姓名:"+name+" 年龄:"+age);
/*常量值为0,意思是可见的
常量值为4,意思是不可见的
常量值为8,意思是不可见的,而且不占用布局空间 */
layout.setVisibility(0);
mbutton.setText("修改用户信息");
}
super.onActivityResult(requestCode, resultCode, data);
}
}
【三】第二个类MainActivity2。代码如下
public class MainActivity2 extends Activity {
private EditText EditText_name;
private EditText EditText_age;
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
EditText_name=(EditText) findViewById(R.id.EditText_name);
EditText_age=(EditText) findViewById(R.id.EditText_age);
mButton=(Button) findViewById(R.id.Button);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String str_name=EditText_name.getText().toString();
String str_age=EditText_age.getText().toString();
Intent data=new Intent();
data.putExtra("Name", str_name);
data.putExtra("Age", str_age);
//请求代码可以自己设置,这里设置成20
setResult(20, data);
//关闭掉这个Activity
finish();
}
});
}
}
【四】MainActivity的xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="填写用户信息"
/>
<LinearLayout
android:id="@+id/layout_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
>
<TextView
android:id="@+id/text_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
/>
</LinearLayout>
</LinearLayout>
【五】MainActivity2的xml文件
<?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" >
<LinearLayout
android:id="@+id/layout_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<EditText
android:id="@+id/EditText_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:hint="请输入姓名:"
/>
<EditText
android:id="@+id/EditText_age"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:hint="请输入年龄:"
/>
</LinearLayout>
<Button
android:id="@+id/Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="确认信息"
/>
</LinearLayout>
【六】操作效果图