您的位置:首页 > 移动开发 > Android开发

android学习 关于用intent 传递数据

2015-08-24 20:27 483 查看
紧接这上面的显式intent和隐式intent1 使用intent向下一个activity传递数据此时,intent中不仅包含自己启动的上下文,还有数据
Intent intent=new Intent(MainActivity.this,ThirdActivity.class);
所以,需要加入数据intent.putExtra("extra_data","i come from mainactivity");第一个称为键值,就是在另一个activity中取值时需要的(如果这样说来,那一个intent肯定可以通过不同的键值来获得传递许多的数据)我的猜测是对的就这样用就好了                        //将要传递的值附加到Intent对象                           intent.putExtra("et1", et1Str);                           intent.putExtra("et2", et2Str);   至于可以用多少个,不太清楚,以后在研究吧加入数据后,就startactivity(intent)即可在另外一个activity中要把这个取出来先要在这个刚刚启动的activity中new一个新的intent 来装传进来的intentIntent 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 {@Overrideprotected 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() {@Overridepublic 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() {@Overridepublic void onClick(View v) {Intent intent=new Intent(MainActivity.this,ThirdActivity.class);intent.putExtra("extra_data","i come from mainactivity");startActivityForResult(intent,2);}});}@Overrideprotected 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 {@Overrideprotected 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() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.putExtra("return_data","hello i come from second activity");setResult(RESULT_OK, intent);finish();}});}@Overridepublic 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 {@Overrideprotected 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() {@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.putExtra("return_data","hello i come from third activity");setResult(RESULT_OK,intent);finish();}});}@Overridepublic void onBackPressed() {Intent intent=new Intent();intent.putExtra("return_data","hello i come from third activity");setResult(RESULT_OK, intent);finish();}}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: