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

Android Activity 之 Intent 数据传递学习笔记

2016-02-25 21:29 483 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: