Android(安卓)四大核心组件之Activity--Intent数据传递
16lz
2022-07-22
1 Activity简单跳转,
1.1 Activity的页面样式及跳转方式:
activity_a.xml
ActivityA.java
public class ActivityA extends Activity {private Button btn_submit; //定义button局部变量 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_a); btn_submit = (Button) findViewById(R.id.btn_submit); btn_submit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//Intent intent = new Intent(); //创建一个Intent对象//intent.setClass(ActivityA.this, ActivityB.class); //描述起点和目标/*上面两种方式可以简写成如下代码*/Intent intent = new Intent(ActivityA.this, ActivityB.class); //简写形式intent.putExtra("txt", "苏州科技大学"); //设置跳转值的传递startActivities(intent); //开始跳转}}); } protected void startActivities(Intent intent) {// TODO Auto-generated method stub super.startActivity(intent); }
activity_b.xml
ActivityB.java public class ActivityB extends Activity {private TextView tvOut;@Overrideprotected void onCreate(Bundle savedInstanceState) { //重写onCreate()方法super.onCreate(savedInstanceState);setContentView(R.layout.activity_b); //绑定布局tvOut = (TextView) findViewById(R.id.tvOut);tvOut.setText(getIntent().getStringExtra("txt"));}}
Tip: 1,AndroidManifest.xml中需要添加代码 2,在ActivityA中默认没有实现 在startActivities()方法调用时,需要先实现该方法。
1.2 实现关闭功能
activity_b.xml添加关闭按钮
ActivityB.java注意代码: public class ActivityB extends Activity {private Button btnClose;@Overrideprotected void onCreate(Bundle savedInstanceState) { //重写onCreate()方法super.onCreate(savedInstanceState);setContentView(R.layout.activity_b); //绑定布局btnClose = (Button) findViewById(R.id.btnClose);btnClose.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}}
Tip: 1. Activity.finish():finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理;Activity.onDestory():系统销毁了这个Activity的实例在内存中占据的空间。在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间等就被回收了。当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。
System.exit(0):调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放。
2 使用Bundle传递数据
ActivityA.java
public class ActivityA extends Activity {private Button btn_submit; //定义button局部变量 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_a); btn_submit = (Button) findViewById(R.id.btn_submit); btn_submit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//Intent intent = new Intent(); //创建一个Intent对象//intent.setClass(ActivityA.this, ActivityB.class); //描述起点和目标/*上面两种方式可以简写成如下代码*/Intent intent = new Intent(ActivityA.this, ActivityB.class); //简写形式//intent.putExtra("txt", "苏州科技大学"); //设置跳转值的传递//方式二:使用bundle方式传递数据Bundle data = new Bundle();data.putString("txt", "苏州科技大学");intent.putExtras(data);startActivities(intent); //开始跳转}}); }
ActivityB.java
public class ActivityB extends Activity {private TextView tvOut;private Button btnClose;@Overrideprotected void onCreate(Bundle savedInstanceState) { //重写onCreate()方法super.onCreate(savedInstanceState);setContentView(R.layout.activity_b); //绑定布局tvOut = (TextView) findViewById(R.id.tvOut);//tvOut.setText(getIntent().getStringExtra("txt"));//方式二:使用bundle方式接收数据//得到数据Bundle data = getIntent().getExtras();String txt = data.getString("txt");tvOut.setText(txt);btnClose = (Button) findViewById(R.id.btnClose);btnClose.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}}
注: 1.使用bundle方式可以添加相对比较复杂的数据 3 取得传回的数据
ActivityB.java
public class ActivityB extends Activity {private TextView tvOut;private Button btnClose;@Overrideprotected void onCreate(Bundle savedInstanceState) { //重写onCreate()方法super.onCreate(savedInstanceState);setContentView(R.layout.activity_b); //绑定布局tvOut = (TextView) findViewById(R.id.tvOut);//tvOut.setText(getIntent().getStringExtra("txt"));//方式二:使用bundle方式接收数据//得到数据Bundle data = getIntent().getExtras();String txt = data.getString("txt");tvOut.setText(txt);btnClose = (Button) findViewById(R.id.btnClose);btnClose.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.putExtra("result", "计算机科学与技术");setResult(0, intent); //指定返回值finish();}});}}
activity_a.xml
ActivityA.java
public class ActivityA extends Activity {private Button btn_submit; //定义button局部变量private TextView tvOut; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_a); tvOut = (TextView) findViewById(R.id.tvOut); btn_submit = (Button) findViewById(R.id.btn_submit); btn_submit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//Intent intent = new Intent(); //创建一个Intent对象//intent.setClass(ActivityA.this, ActivityB.class); //描述起点和目标/*上面两种方式可以简写成如下代码*/Intent intent = new Intent(ActivityA.this, ActivityB.class); //简写形式//intent.putExtra("txt", "苏州科技大学"); //设置跳转值的传递//方式二:使用bundle方式传递数据Bundle data = new Bundle();data.putString("txt", "苏州科技大学");intent.putExtras(data);//startActivities(intent); //开始跳转startActivityForResult(intent, 0);}}); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { String result = data.getStringExtra("result"); tvOut.setText(result); super.onActivityResult(requestCode, resultCode, data); }
注: 1,如果取得传回的数据,不能使用startActivities(intent),而是使用startActivityForResult(intent, 0); 更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- python起点网月票榜字体反爬案例
- 《Android开发从零开始》——25.数据存储(4)
- Android系统配置数据库注释(settings.db)
- Android中不同应用间实现SharedPreferences数据共享
- android图表ichartjs
- android 创建桌面快捷方式 、插件
- Android内容提供者源码
- android源码下载方式