Android Activity 之 Intent 数据传递学习笔记
来源:互联网 发布:浙师大行知学院迎新网 编辑:程序博客网 时间:2024/05/17 01:51
1.MainActivity.java
public class MainActivity extends Activity implements OnClickListener{
//自定义请求码
private static final int REQUEST_CODE = 1;
private static final int REQUEST_CODEXXX = 10;
private Button btn01,btn02,btn03;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn01 = (Button) findViewById(R.id.m_btn_01);
btn02 = (Button) findViewById(R.id.m_btn_02);
btn03 = (Button) findViewById(R.id.m_btn_03);
btn01.setOnClickListener(this);
btn02.setOnClickListener(this);
btn03.setOnClickListener(this);
setTitle("MainActivity 主界面");
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.m_btn_01:
Intent intent01 = new Intent(MainActivity.this,Activity01.class);
intent01.putExtra("key_str","数据来自 MainActivity");
startActivity(intent01);
break;
case R.id.m_btn_02:
Intent intent02 = new Intent(MainActivity.this,Activity01.class);
intent02.putExtra("key_str","数据来自 MainActivity,第二种跳转");
startActivityForResult(intent02,REQUEST_CODE);
break;
case R.id.m_btn_03:
Intent intent03 = new Intent(MainActivity.this,Activity01.class);
intent03.putExtra("key_str","数据来自 MainActivity,第二种跳转 XXXXX");
startActivityForResult(intent03,REQUEST_CODEXXX);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
System.out.println("------------onActivityResult()");
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODEXXX){
if(null !=data){
String str = data.getStringExtra("result_str");
setTitle(str);
}
}
if(resultCode==RESULT_OK){
if(null !=data){
String str = data.getStringExtra("result_str");
setTitle(str);
}
}
else if(resultCode==RESULT_CANCELED){
Toast.makeText(this, "bad", Toast.LENGTH_SHORT).show();
if(null !=data){
String str = data.getStringExtra("result_str");
setTitle(str);
}
}else{
Toast.makeText(this, "未经处理", Toast.LENGTH_SHORT).show();
}
}
}
/*
*
*1.在 MainActivity.java 中,使用 putExtra() 方法将一组键值对添加到 Intent 的 Extras
* 在 Activity01.java 中使用 getIntent 获取前一个页面传过来的 Intent 对象
*
*2.在 startActivityForResult(intent02,REQUEST_CODE) 有两个参数,第一个参数即将要启动的 Intent,
* 第二个参数是一个整形的请求码。如果请求码大于 0 ,这个请求码将被返回到 onActivityResult() 的参数里边
* 通过不同的请求码使得在 Activity 的回调方 onActivityResult() 中针对不同的 Activity 的返回值进行不同的操作
*
*3.也可以通过 Activity01.java 中的 setResult() 方法指定特定的返回码在 onActivityResult() 中完成指定操作
*
*
*/
2.Activity01.java
public class Activity01 extends Activity {
private static final int RESULT_OTHER = 5;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity01);
Intent intent = getIntent();
String str = intent.getStringExtra("key_str");
setTitle(str);
this.findViewById(R.id.btn1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("result_str", "从 Activity01 返回的数据");
setResult(RESULT_OK, intent);
finish();
}
});
this.findViewById(R.id.btn2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("result_str", "测试一下");
setResult(RESULT_CANCELED, intent);
finish();
}
});
this.findViewById(R.id.btn3).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("result_str", "测试一下");
setResult(RESULT_OTHER, intent);
finish();
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK){
Intent intent=new Intent();
intent.putExtra("result_str", "第三个按键...从 Activity01 返回的数据");
setResult(RESULT_OK,intent);
finish();
}else{
setResult(RESULT_CANCELED,null);
}
return true;
}
}
3.activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/m_btn_01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="startActivity 跳转"/>
<Button
android:id="@+id/m_btn_02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="startActivityForResult 跳转"/>
<Button
android:id="@+id/m_btn_03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="startActivityForResult 跳转之二"/>
</LinearLayout>
4.activity01.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn1"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="返回数据"
/>
<Button
android:id="@+id/btn2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="取消"
/>
<Button
android:id="@+id/btn3"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="未经处理"
/>
</LinearLayout>
- Android Activity 之 Intent 数据传递学习笔记
- 《老罗Android》学习之使用Intent传递数据及Activity返回数据
- android学习笔记之七在Activity之间传递数据
- android学习笔记之Intent消息传递
- Intent之学习二(Activity间数据的传递)
- Android开发之使用Intent在Activity之间传递数据
- Android之Activity之间的数据传递-intent-bundle
- Android 四大核心组件之Activity--Intent数据传递
- 【intent extra】Android Activity直接传递数据
- Android Activity通过Intent传递数据
- Android之Intent传递数据
- android学习笔记(一)activity的基本用法和创建,bundle如何传递数据,intent的用法
- Android学习笔记-Activity&Intent
- android学习笔记之通过Intent传递Bundle用法
- Android Intent传递数据从一个Activity到另一个Activity
- Android学习笔记之Intent穿梭于各个Activity之间
- Android编程学习笔记 之 Fragment与Activity的数据传递
- Android学习笔记——Activity之间的数据传递
- posix线程库<一>
- wex5中SVN的使用方法
- Mysql如何储存中文字符
- BZOJ_P2002 [HNOI2010]Bounce 弹飞绵羊(LCT)
- android学习 - 高德地图api定位基础(1)
- Android Activity 之 Intent 数据传递学习笔记
- 如何获取两个字符串中两个相同的字符
- Tachyon更名为 Alluxio,并发布1.0版本
- 20160212.CCPP体系详解(0022天)
- 《leetCode》:Binary Tree Level Order Traversal II
- leetcode 16. 3Sum Closest
- 【SSH 1】SSH框架的基本理解
- Copy List with Random Pointer
- 三层总结