Android中两个Activity之间数据传递及返回
来源:互联网 发布:日进斗金软件下载 编辑:程序博客网 时间:2024/04/30 15:35
下面通过一个例子来详细说明
先上代码,再细细分析
MainActivity
public class MainActivity extends Activity{private Button mainBtn=null;private final static int REQUEST_CODE=1;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mainBtn=(Button)findViewById(R.id.mainBtn);mainBtn.setOnClickListener(listener);}private OnClickListener listener=new OnClickListener(){@Overridepublic void onClick(View v){Intent intent=new Intent();intent.setClass(MainActivity.this, SecondActivity.class);intent.putExtra("str", "Intent Demo");startActivityForResult(intent, REQUEST_CODE);}};@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data){if (requestCode==REQUEST_CODE){if (resultCode==SecondActivity.RESULT_CODE){Bundle bundle=data.getExtras();String str=bundle.getString("back");Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();}}}}
由MainActivity 通过最简单的Intent.putExtra方法,将参数传入,也可以用Bundle传入参数,
Bundle bundle = new Bundle();
bundle.putString("str", "Intent Demo");
intent.putExtras(bundle);
若需要获得返回值,则用startActivityForResult(),并需要知道返回的一个RESULT_CODE(int类型),可以理解为指针,用intent.setClass() 确定传递给那个类(这里包括Activity、Service等)。第二个Activity---本例中的SecondActivity ,用Intent intent=getIntent();Bundle bundle=intent.getExtras();String str=bundle.getString("str");获得前一个Activity传来的参数,这里还需要返回给MainActivity参数,用到了setResult(RESULT_CODE, intent); 这里 要说明的是RESULT_CODE必须与前一个Activity一致,否则就不能正常返回。而第一个MainActivity通过重写onActivityResult()来取得相应的返回值。
若不需要返回,可以直接用startActivity()。
SecondActivity
public class SecondActivity extends Activity{public final static int RESULT_CODE=1;private TextView secondTxt;private Button secondBtn;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.second);Intent intent=getIntent();Bundle bundle=intent.getExtras();String str=bundle.getString("str");secondTxt=(TextView)findViewById(R.id.secondTxt);secondTxt.setText(str);secondBtn=(Button)findViewById(R.id.secondBtn);secondBtn.setOnClickListener(listener);}private OnClickListener listener=new OnClickListener(){@Overridepublic void onClick(View v){Intent intent=new Intent();intent.putExtra("back", "Back Data");setResult(RESULT_CODE, intent);finish();}};}
对于初学者,还得提醒一下,别忘记在AndroidManifest.xml添加SecondActivity类
<activity android:name=".SecondActivity" android:label="@string/app_name"></activity>
- Android中两个Activity之间数据传递及返回
- Android中两个Activity之间数据传递及返回
- Android中两个Activity之间数据传递及返回
- Android中两个Activity之间数据传递及返回
- Android中两个Activity之间数据传递及返回
- Android中两个Activity之间数据传递及返回
- Android中两个Activity之间数据传递及返回
- Android中两个Activity之间数据传递及返回
- Android 两个Activity之间传递数据及返回
- Android中Activity之间数据传递及返回
- Android Studio中两个Activity之间的转换及数据的传递
- Android中在两个Activity之间进行数据传递
- Android 在两个 Activity 之间传递数据
- Android之两个activity之间传递数据且有返回值
- Android中Activity之间传递数据详解
- Android Activity、Fragment之间的数据传递和返回
- Android学习笔记-两个Activity之间传递数据
- [一问一答][Android] 如何在两个Activity之间传递(共享)数据
- 如何查找Linux服务器上查找webshell
- 最近在淘宝上买东西
- ecllipse调试postgresql
- 一个平凡菜鸟的C#琐碎总结 ----- 文件操作(一)
- windows、linux、mac操作系统间换行符的编码差异
- Android中两个Activity之间数据传递及返回
- Debug中cx的值
- 基于android手机的3G+GPS远程控制模型车工程-android手机编程3-创建控制服务
- stl中的Map
- SQL查询及删除重复记录的方法
- ORACLE SQL性能优化系列 (八)
- oracle decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
- 使用Android自带Gallery组件实现CoverFlow
- DB2 Express-C V9.5和V9.1的许可协议的对比