Android 四大核心组件之Activity--Intent数据传递

1 Activity简单跳转,

1.1 Activity的页面样式及跳转方式:

activity_a.xml
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button
        android:id="@+id/btn_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:text="@string/btn_submit" />
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() {
			@Override
			public 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
<TextView
        android:id="@+id/tvOut"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tvOut"/>
ActivityB.java
public class ActivityB extends Activity {
	private TextView tvOut;
	@Override
	protected 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中需要添加<activity android:name="ActivityB"></activity>代码
2,在ActivityA中默认没有实现
startActivities()方法调用时,需要先实现该方法。


1.2 实现关闭功能

activity_b.xml添加关闭按钮
<Button
        android:id="@+id/btnClose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/tvOut"
        android:layout_below="@+id/tvOut"
        android:layout_marginTop="16dp"
        android:text="@string/btnClose" />
ActivityB.java注意代码:
public class ActivityB extends Activity {
	private Button btnClose;
	@Override
	protected void onCreate(Bundle savedInstanceState) {  //重写onCreate()方法
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_b);   //绑定布局
		
		btnClose = (Button) findViewById(R.id.btnClose);
		btnClose.setOnClickListener(new View.OnClickListener() {
			@Override
			public 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() {
			@Override
			public 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;
	@Override
	protected 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() {
			@Override
			public void onClick(View v) {
				finish();
			}
		});
	}
}
注:
1.使用bundle方式可以添加相对比较复杂的数据

3 取得传回的数据

ActivityB.java

public class ActivityB extends Activity {
	private TextView tvOut;
	private Button btnClose;
	@Override
	protected 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() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent();
				intent.putExtra("result", "计算机科学与技术");
				setResult(0, intent);   //指定返回值
				finish();
			}
		});
	}
}
activity_a.xml
<TextView
        android:id="@+id/tvOut"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
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() {
			@Override
			public 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);







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值