Android -- 两个activity界面的切换, 显示Intent 和 隐式Intent,putExtra传递数据

1. 两个Activity之间可以通过Intent切换, 包括显示Intent 和 隐式Intent。

实例代码

MainActivity.java

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	/*
	同一个应用程序里面 自己激活自己的东西. 推荐使用显示意图.	效率高.
	不同的应用程序里面,激活别人的应用,或者是让自己的某一个界面希望被别人激活,推荐使用隐式意图,
	1. 查询系统里面的所有的activity 看看是不是有满足条件的activity.
	2.有,判断多少个,只有1个 直接启动, 如果有多个,列表方式 
	3.如果没有, 应用程序异常终止 activity not found execption	
	*/
	
	// Intent  显示意图. 
	// 显示意图: 必须要指定开启组件的具体信息( 包名, 组件名, 组件的class)
	//当用户点击按钮的时候 跳转到第二个界面
	public void click(View view){		
		Intent intent = new Intent(this, OtherScreenActivity.class);
//		intent.setClassName(this, "com.itheima.twoactivity.OtherScreenActivity");
		startActivity(intent);
	}
	
	public void click2(View view){
		//cmp=com.android.gallery/com.android.camera.GalleryPicker
		Intent intent = new Intent();
		intent.setClassName("com.android.gallery", "com.android.camera.GalleryPicker");
		startActivity(intent);
	}
	
	//采用隐式意图 激活第三个界面
	public void click3(View view){
		Intent intent = new Intent();
		intent.setAction("com.itheima.xxx");
		//如果权限xml文件中没有加,则是默认值,必须设置为CATEGORY_DEFAULT
		intent.addCategory(Intent.CATEGORY_DEFAULT);
		//指定数据的类型, 如果一个APP既有Data又有Type 必须同时设置
		//intent.setType("vnd.android.cursor.item/haha");
		//intent.setData(Uri.parse("itheima:gagaga"));
		intent.setDataAndType(Uri.parse("itheima:gagaga"), "vnd.android.cursor.item/haha");
		intent.putExtra("name", "kevin");
  		//putExtra 可以传对象,但是需要实现Serializable接口
		startActivity(intent);
		
		//动作action 类型Type 数据data  
		//动作 数据
		//打 人  打酱油    
		//泡 茶 泡 妞
		//泡绿茶 泡红茶 泡乌龙茶
		//addCategory 附加的信息. 提供一些执行的环境 参数
	}
		
	public void click4(View view){
		Intent intent = new Intent();
		intent.setAction("android.intent.action.SENDTO");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.setData(Uri.parse("sms:110"));
		startActivity(intent);
	}
	
}

OtherScreenActivity.java

//activity 是系统的重要的组件 , 
//操作系统要想找打activity  就必须在 清单文件里面配置
public class OtherScreenActivity extends Activity {
	//重写 activity 的oncreate方法  方法里面设置初始化程序的界面.
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_two);
		
		Intent intent = getIntent();//获取到激活他的意图
		Uri uri = intent.getData();
		String result = uri.toString();
		String name = intent.getStringExtra("name");
		System.out.println(result);
	}
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.itheima.twoactivity"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/app"
        android:label="@string/application_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.itheima.twoactivity.MainActivity"
            android:icon="@drawable/atools"
            android:label="@string/activiy01" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
		
        <activity
            android:name="com.itheima.twoactivity.OtherScreenActivity"
            android:icon="@drawable/ic_scanner_malware"
            android:label="@string/activity02" >
            <intent-filter>
                <action android:name="com.itheima.xxx" />

                <data
                    android:mimeType="vnd.android.cursor.item/haha"
                    android:scheme="itheima" >
                </data>

                <category android:name="android.intent.category.DEFAULT" >
                </category>
            </intent-filter>
        </activity>
    </application>

</manifest>



 

posted @ 2014-04-01 11:00  今晚打酱油_  阅读(1303)  评论(0编辑  收藏  举报