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();}}
相关文章推荐
- Android中IntentService的原理及使用
- Android应用打破65K方法数限制
- 关于Android ViewPager的实现
- android---自定义左滑右滑菜单
- Android:android studio提示adb: ADB server didn't ACK
- Android RAM、ROM和SD卡解释
- android多分辨率多密度下界面适配方案
- Android控件之checkbox
- Android 从入门到精通
- Android PopupWindow的使用和分析
- Android(java)学习笔记194:ListView编写步骤(重点)
- Android:学习笔记(一)
- Android-BroadcastReceiver 向 Activity 传值(电量显示)
- Android图形显示之硬件抽象层Gralloc(hal 转)
- Android笔记 3
- 关于更佳学术搜索及Android SDK更新问题
- Android读取assets下的文件
- 在mac上交叉编译mono的脚本,mac x64,iphone armv7,iphone armv7s,android armv7-a
- Android Studio Start Failed解决方法
- Android Looper和Handler