android学习 关于用intent 传递数据

紧接这上面的显式intent和隐式intent


1 使用intent向下一个activity传递数据

此时,intent中不仅包含自己启动的上下文,还有数据

Intent intent=new Intent(MainActivity.this,ThirdActivity.class);

所以,需要加入数据

intent.putExtra("extra_data","i come from mainactivity");

第一个称为键值,就是在另一个activity中取值时需要的(如果这样说来,那一个intent肯定可以通过不同的键值来获得传递许多的数据)我的猜测是对的

就这样用就好了

  1.                         //将要传递的值附加到Intent对象   
  2.                         intent.putExtra("et1", et1Str);   
  3.                         intent.putExtra("et2", et2Str);   

至于可以用多少个,不太清楚,以后在研究吧


加入数据后,就startactivity(intent)即可


在另外一个activity中要把这个取出来

先要在这个刚刚启动的activity中new一个新的intent 来装传进来的intent

Intent intent=getIntent();

之后可以用intent.getStringData(“extra_data ”这就是刚刚那个键值);

放到一个str里面就可以了



2启动一个activityA中启动activityB,然后从B中获得数据后,返回给A

总共分为三部分

在A中启动B 用startactivityforresult

在B中返回数据,回到A

在A中获得B中返回的数据


启动B的时候,这个方法要传两个东西,一个是代表你将要启动谁的intent,一个叫做请求码,request code,这个是返回的时候,知道是谁返回的,所以应是一个唯一的值


在B中构造数据也差不多,new一个intent 然后用putextra方法设一个键值,弄一个数据

关键再随后要一个setResult(RESULT_OK,intent);这应该是设置结果的一个函数

最后来个finish();


A这边处理这个数据需要重写onActivityResult(int requestcode ,int resultcode ,Intent data)函数  从这个intent的名字也可以看出,这个东西就是用来传数据的

在里面用一个swich(requestcode){

case 1:if(resultcode==RESULT_OK){

            string str=data.getStringdata("键值")

};


为了考察这个requestcode的功能,我自己稍微改了一下例子的代码。所以,今天要贴下来



BaseActivity

package com.example.sss.activitytest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

/**
 * Created by sss on 2015/8/24.
        */
public class BaseActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("BaseActivity",getClass().getSimpleName());
    }
}
 
MainActivity
package com.example.sss.activitytest;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button1=(Button)findViewById(R.id.btnStartSecondActivity);
        Button button2=(Button)findViewById(R.id.btnStartThirdActivity);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,SecondActivity.class);
                intent.putExtra("extra_data","i come from mainactivity");
                startActivityForResult(intent,1);
            }
        });
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,ThirdActivity.class);
                intent.putExtra("extra_data","i come from mainactivity");
                startActivityForResult(intent,2);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case 1:
                if(resultCode==RESULT_OK){
                    String returndata=data.getStringExtra("return_data");
                    Toast.makeText(this,returndata,Toast.LENGTH_SHORT).show();
                }
            case 2:
                if(resultCode==RESULT_OK){
                    String returndata=data.getStringExtra("return_data");
                    Toast.makeText(this,returndata,Toast.LENGTH_SHORT).show();
                }

        }
    }


}


SecondActivity

package com.example.sss.activitytest;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.net.Inet4Address;

public class SecondActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent=getIntent();
        String data=intent.getStringExtra("extra_data");
        Toast.makeText(this,data,Toast.LENGTH_SHORT).show();
        Button button2=(Button)findViewById(R.id.btnComebackToMainActivity);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.putExtra("return_data","hello i come from second activity");
                setResult(RESULT_OK, intent);
                finish();
            }
        });

    }

    @Override
    public void onBackPressed() {
        Intent intent=new Intent();
        intent.putExtra("return_data","hello i come from second activity");
        setResult(RESULT_OK, intent);
        finish();
    }
}
 
ThirdActivity
package com.example.sss.activitytest;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.net.Inet4Address;

public class ThirdActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent=getIntent();
        String data=intent.getStringExtra("extra_data");
        Toast.makeText(this,data,Toast.LENGTH_SHORT).show();
        Button button2=(Button)findViewById(R.id.btnComebackToMainActivity);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.putExtra("return_data","hello i come from third activity");
                setResult(RESULT_OK,intent);
                finish();
            }
        });

    }

    @Override
    public void onBackPressed() {
        Intent intent=new Intent();
        intent.putExtra("return_data","hello i come from third activity");
        setResult(RESULT_OK, intent);
        finish();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值