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>


0 0
原创粉丝点击