15_Android的Intent对象


目录

1.Intent对象的基本概念

2.使用Intent对象传递数据


1.Intent对象的基本概念

1.Intent是Android应用程序组件之一

2.Intent对象在Android系统当中表示一种意图

3.Intent当中最重要的内容是action与data

比如:Intent是一种意图,在现实生活中,我们人也有意图,打篮球、看电影、都是 一种意图,一个意图包含两个重要的内容,action和data,比如打篮球这个动作是action,那么其他一些因素就是data.

2.使用Intent对象传递数据

1.在Activity之间可以通过Intent对象传递数据

2.使用putExtra()系列方法向Intent对象当中存储数据

3.使用getXXXExtra()系列方法从Intent对象当中取数据

例子:

  • 我们需要在MainActivity通过一个button,跳转到另一个Activity,在另一个Activity通过intent方法获取到上一个Activity传递过来的数据,和上一节类似:点我查看
  • 创建两个Activity和两个布局文件,默认会创建一个名为MainActivity的Activity,和activity_main.xml的布局文件
  • 增加一个名为SecondActivity的Activity,名为antivity_second.xml的布局文件

1.首先,新建一个应用程序,命名为:S12_Intent

2.先修改activity_main.xml的布局文件,布局文件的内容,增加一个Button和TextView,

代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
	
    <TextView
        android:id="@+id/firstTextViewId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ff0000"
        android:textSize="20dp"
        android:gravity="center"
        android:text="这是MainActivity" />
    <Button 
        android:id="@+id/buttonId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="启动SecondActivity"
        android:layout_below="@id/firstTextViewId"
        android:layout_marginTop="20dp"/>

</RelativeLayout>

3.然后在MainActivity.java中按钮的监听器实现类接口,然后为按钮绑定监听器,在按钮的onClick函数添加跳转函数:

提示:详细解析看上一节

package com.yuan.s12_intent;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button =(Button)findViewById(R.id.buttonId);
        OnButtonListener listener =new OnButtonListener();
        button.setOnClickListener(listener);
    }

    class OnButtonListener implements OnClickListener{

		public void onClick(View v) {
			//生成意图对象
			Intent intent = new Intent();
			intent.setClass(MainActivity.this, SecondActivity.class);
			//调用startActivity,启动这个intent,这个意图就是打开另一个Activity
			startActivity(intent);
		}
    	
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

 4.接着,增加一个名为activity_second.xml的布局文件

在activity_second布局文件增加一个TextView控件

5.然后新建名为SendActivity.java的类,去继承Activity,在这个类中复写Activity的onCreate方法 

6.修改SecondActivity的onCreate方法,在此方法中调用getIntent方法去获取启动这个Intent对象的Activity

这样我们就可以在第二个Activity中的到启动这个Activity的Intent对象,我们就可以获取启动这个Intent的数据了

提示:使用setContentView(View)来显示指定控件

7.这里注意非常重要的一点,你需要用的Activity必须在Manifest.xml文件里面注册这个Activity,不然当你调用这个Activity时,程序就会报错:


以上我们已经完成了大部分工作,现在我们需要的是让两个Activity使用Intent对象传递数据 .

我们修改MainActivity的onClick函数,修改函数向Intent对象当中存储数据:

存入一个.Age的键,值为:30,这样一来。我们便可在其他的Activity获取到这个值 

 

 在SecondActivity中我们可以把Age这个数据通过intent取出来

我们通过intent把数值取出来然后放在这个Activity的TextView当中,怎么做我们已经很清楚了, 刚刚已经有了一个TextView。再定义了一个TextView控件,用来显示获取到的数值:

修改activity_second.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" >
    <TextView 
        android:id="@+id/secondTextViewId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#00ff00"
        android:textSize="20dp"
        android:gravity="center"
        android:text="这个SendondActivity"/>
     <TextView 
        android:id="@+id/secondTextViewId2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:text="age"/>
    

</LinearLayout>

 然后在SecondActivity.java文件中声明引用,获取控件对象,代码如下:

package com.yuan.s12_intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends Activity {
	//声明引用
	private TextView textView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		//使用setContentView(View)来显示指定控件
		setContentView(R.layout.activity_second);
		//获取代表空间的对象
		textView =(TextView)findViewById(R.id.secondTextViewId2);
		//生成意图对象
		Intent intent = getIntent();
		//获取意图对象的数据
		int age = intent.getIntExtra("com.yuan.s12_intent.Age", 10);
		//显示获取到的值
		textView.setText("Age:"+age);
	}

}

以上我们已经把代码的部分写好,运行这个应用程序:

可以这是修改,getIntExtra里面的键值,再试试看:

实验结果: 


同样我们也可以放入字符串,然后再另一个Activity得到这个数据:

实验结果:


 小结:通过Intent我们就可以在Activity之间进行切换,且通过intent的方法可以在Activity之间传递数据,当一个Activity要覆盖下上一个Activity时,可以通过Intent方法把数据传递给下一个Activity.。


附录: 

本博文Demo下载:https://github.com/zGuangYuan/Android- 

github的用法:点我查看

猜你喜欢

转载自blog.csdn.net/qq_36243942/article/details/81938476