• 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>



     

  • 相关阅读:
    单链表之C++实现
    Activity的onSaveInstanceState()和onRestoreInstanceState()方法
    一段代码引发的血案
    Android核心基础(十)
    paip.提升性能--- mysql 建立索引 删除索引 很慢的解决.
    求数组的子数组之和的最大值
    HDU 1576 A/B(数论)
    脚本控制向Android模拟拨打电话,发送短信,定位设置功能
    [置顶] java ant 配置及构建项目
    paip.输入法编程---智能动态上屏码儿长调整--.txt
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3647970.html
Copyright © 2020-2023  润新知