Android-onActivityResult。Activity之间如何传递信息?

【一】看一个项目中,好多类中接连出现了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>

【六】操作效果图



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值