android学习 关于用intent 传递数据

来源:互联网 发布:云计算平台storm 编辑:程序博客网 时间:2024/05/18 13:42

紧接这上面的显式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();    }}


0 0
原创粉丝点击