以解决这两个问题为例:
问题一:有两个Activity(A和B),从A跳转到B,同时B需要A中的数据:
效果图:
代码:
MainActivity类:
package com.test.bundletest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
public class MainActivity extends Activity {
private EditText name_edt;
private EditText age_edt;
private RadioButton sex_rbtn;
private Button submit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String name = name_edt.getText().toString();
String age = age_edt.getText().toString();
String sex = sex_rbtn.isChecked()?"男":"女";
Student stu = new Student(name, age, sex);
Intent intent = new Intent(MainActivity.this,SecondActicity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("student", stu);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
private void initView() {
name_edt = (EditText) findViewById(R.id.id_edt_name);
age_edt = (EditText) findViewById(R.id.id_edt_age);
sex_rbtn = (RadioButton) findViewById(R.id.id_sex_male);
submit = (Button) findViewById(R.id.id_btn_submit);
}
}
SecondActivity类:
package com.test.bundletest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActicity extends Activity {
private TextView tv_name;
private TextView tv_age;
private TextView tv_sex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
initView();
Intent intent = getIntent();
Student student = (Student) intent.getSerializableExtra("student");
tv_name.setText(student.getName());
tv_age.setText(student.getAge());
tv_sex.setText(student.getSex());
}
private void initView() {
tv_name = (TextView) findViewById(R.id.id_name);
tv_age = (TextView) findViewById(R.id.id_age);
tv_sex = (TextView) findViewById(R.id.id_sex);
}
}
上边的实例中就是在MainActivity类中发送数据,然后发送到SecondActivity类,由SecondActivity处理接收到的数据并显示出来。
收获
当A携带数据发送给B的时候,然后由B接收处理数据时:
可以使用Intent中携带Bundle中的数据的方式来处理。
问题二:同样是A和B两个Activity,A跳转到B后,当B关闭时将B中的数据回传到A中:
效果图:
代码:
MainActivity类:
package com.test.activitytest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button btn_get;
private TextView tv_city;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_get = (Button) findViewById(R.id.id_btn_getCity);
tv_city = (TextView) findViewById(R.id.id_tv_city);
btn_get.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
SecondActivity.class);
startActivityForResult(intent, 0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0 && resultCode == 0) {
Bundle bundle = intent.getExtras();
String result = bundle.getString("city");
tv_city.setText(result);
}
}
}
SecondActivity类:
package com.test.activitytest;
import android.app.ExpandableListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SecondActivity extends ExpandableListActivity {
private String[] provinces = new String[]{
"山东","湖南","广东"
};
private String[][] cities = new String[][] {
{"东营","济南","青岛"},
{"衡阳","长沙","岳阳"},
{"广州","深圳","中山"}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ExpandableListAdapter adapter = new BaseExpandableListAdapter() {
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout(SecondActivity.this);
ll.setOrientation(0);
ImageView logo = new ImageView(SecondActivity.this);
ll.addView(logo);
TextView textView = getTextView();
textView.setText(getGroup(groupPosition).toString());
ll.addView(textView);
return ll;
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public int getGroupCount() {
return provinces.length;
}
@Override
public Object getGroup(int groupPosition) {
return provinces[groupPosition];
}
@Override
public int getChildrenCount(int groupPosition) {
return cities[groupPosition].length;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
TextView textView = getTextView();
textView.setText(getChild(groupPosition, childPosition).toString());
return textView;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return cities[groupPosition][childPosition];
}
};
setListAdapter(adapter);
getExpandableListView().setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Intent intent = getIntent();
intent.putExtra("city", cities[groupPosition][childPosition]);
SecondActivity.this.setResult(0,intent);
SecondActivity.this.finish();
return false;
}
});
}
private TextView getTextView(){
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,64);
TextView textView = new TextView(SecondActivity.this);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
textView.setPadding(36, 0, 0, 0);
textView.setTextSize(20);
return textView;
}
}
上边的实例就是从第一个Activity跳转到第二个Activity,然后将第二个Activity中的数据回传给第一个Activity,并在第一个Activity中显示出回传过来的数据。
收获:
(1)有两个Activity(A和B),当A启用指定B,而且期望获取指定的B返回的结果的时候,A可以使用startActivityForResult(Intent intent,int requestCode)方法来启用指定的B。
(2)为了获取B返回的结果,需要使用下面的方法:
1. A需要重写onActivityResult(int requestCode,int resultCode,Intent intent),当B返回结果的时候,该方法就会被触发。requestCode—请求代码,resultCode—返回结果码。
2. B需要调用setResult()方法设置处理结果。
(3)上边设置requestCode和resultCode的原因:
一个Activity中可能包含多个按钮,并调用多个startActivityForResult()方法来打开多个不同的Activity处理不同的业务,这些新的Activity关闭后,系统都将会回调前面的Activity的onActivityResult(int requestCode,int ResultCode,Intent intent)方法。
为了知道该方法是由哪个请求的结果触发的,可利用requestCode请求码,为了知道返回的数据来自于哪个新的Acitivity,可利用ResultCode结果码。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
2、启动activity-显示启动和隐式启动: 3、隐式启动自己的activity 4、获取隐启动传递过来的data数据 5、显示启动传递数据 6、禁用掉横竖屏切换 7、开启activity获取返回值-startActivityForResult:
Android学习笔记-Activity篇 Contents Android学习笔记-Activity篇 1 一、activity创建: 1 二、在manifest.xml中声明activity: 1 三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的...
Android应用源码开发Demo,主要用于毕业设计学习。
该程序实现了activity之间的跳转以及传值!
多个Activity跳转的小结,A跳转到B,B跳转到C,C跳转到B,B跳转到A,并且相互之间传递数据。
假如说有一个activity A,在A中跳转到Activity B, 然后在B中跳转到Activity C中,最后要在C中把activity A,B,C都关掉。 首先有一个Activity A,A中有一个Button,点击这个Button会跳到Activity B中去,但会拿到...
Activity跳转 四种跳转方式
实现androidActivity的跳转,数据返回,传数据
Activity_04(Activity的声明周期--Activity Lifecycle--代码. 包含onCreate,onStart,onRestart,onResume,onPause,onStop,onDestroy 的之行顺序等。。
实现Activity跳转代码 本人菜鸟 旨在分享交流
activity跳转动画效果 轻松实现超炫跳转动画效果
涉及:activity跳转、intent使用、startActivityForResult/onActivityResult,着重讲解通过来Application Context实现共享数据
代码主要实现从一个Activity跳转到另外一个Activity
1.使用 Intent 和 Bundle 实现页面之间的参数传递和跳转; 2.ListView 的使用以及 ListView 中 Item 的点击事件处理 3.button点击事件
Activity A跳转Activity B,再按返回键,A、B的生命周期执行顺序是什么? 当听到这个题目的时候,我得意地笑了笑,对于Activity的生命周期已经记熟的我,心想,为什么不直接问Activity的生命周期呢?于是想当然的说...
演示5.x之前Android的Activity跳转动画,以及Android5.x之后的跳转动画
android bundle和activity之间交换数据
android实现activity跳转,给初学者一点实例参考,本源码就是实现点击按钮,实现activity跳转
本文的是深入重点讲解Activity,主要Activity生命周期、Activity之间数据交互、Activity启动模式、Task和BackStack。
Android的Activity跳转动画