activity显隐跳转及值传递

版权声明:本文为Mr.release原创文章,未经博主允许不得转载。如有问题请关注https://blog.csdn.net/AliEnCheng/article/details/78451291

1.1Activity跳转

//拨打电话(隐式启动)
	public void click(View view){	
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_CALL);
		Uri data=Uri.parse("tel:"+"110");
		intent.setData(data);
		startActivity(intent);
	}
	//打开网页/隐式启动
	public void click2(View view){		
		Intent intent = new Intent();		
		intent.setAction(intent.ACTION_VIEW);
		Uri data = Uri.parse("http://"+"www.baidu.com");
		intent.setData(data );
		startActivity(intent);		
	}
	//隐式启动ScondActivity
	public void click3(View view){		
		Intent intent = new Intent();
		intent.setAction("a.b.c");
		Uri data = Uri.parse("hehe:"+"你好啊");
		intent.setDataAndType(data, "text/text");
		startActivity(intent);		
	}
	//隐士启动拨号器
	public void click4(View view){		
		Intent intent = new Intent();
		intent.setAction(intent.ACTION_DIAL);
		Uri data=Uri.parse("tel:"+"110");
		intent.setData(data);
		startActivity(intent);		
	}	
	//显示启动ScondActivity
	public void click5(View view){		
		Intent intent = new Intent();
		intent.setClass(this, SecondActivity.class);	
		intent.putExtra("三国", "曹操");
		startActivity(intent);		
	}
	//显示启动拨号器
	public void click6(View view){
		//01-14 10:13:00.929: I/ActivityManager(384): 
		//Displayed com.android.contacts/.activities.DialtactsActivity: +388ms
		Intent intent = new Intent();
		intent.setClassName("com.android.contacts", "com.android.contacts.DialtactsActivity");
		startActivity(intent);		
	}
	//打开网页/显式启动
	public void click7(View view){		
		//01-14 10:27:46.329: I/ActivityManager(384): 
		//Displayed com.android.browser/.BrowserActivity: +295ms
		Intent intent = new Intent();
		intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
		startActivity(intent);		
	}

	<manifest
		<application
	 		<activity 
	            android:name=".SecondActivity"
	            android:label="我是SecondActivity"
	            >
					<intent-filter>
		                <action android:name="a.b.c" />
		                <data android:scheme="hehe"/>
		                <data android:mimeType="text/text"/>
		                <category android:name="android.intent.category.DEFAULT" />
	           		</intent-filter>            
	        </activity>
	    </application>	
	</manifest>

1.2获取打开的Activity销毁前设置的数据-startActivityForResult

1.当前类

Intent intent = new Intent(mContext, CarTypeActivity.class);
		//startActivityForResult(android.content.Intent intent, int requestCode)
        startActivityForResult(intent, 1);
	 @Override
	    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	        super.onActivityResult(requestCode, resultCode, data);
	        switch (requestCode) {
	            case 1:
	                if (resultCode == 1) {
	                    mCarModelId = data.getExtras().getInt("carModelId");
	                    String carModelName = data.getExtras().getString("carModelName");
	                    mTvJoinType.setText(carModelName + "");
	                }
	                break;
	            default:
	                break;
	        }
	    }

2.CarTypeActivity类

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                CarTypeBean.DataBean dataBean = mList.get(position);
                Intent intent = new Intent();
                intent.putExtra("carModelId", dataBean.getId());
                intent.putExtra("carModelName", dataBean.getBrand() +" "+ dataBean.getModel());
				//setResult (int resultCode, Intent data)
                setResult(1, intent);
                finish();
            }
        });

2.1 隐式跳转

  1. 定义:通过intent-filter中的action进行的跳转就是隐式跳转。
  2. 特定
    1. 如果一个Activity有多个intent-filter,那么我们只需要匹配上一个,就可以将其启动起来。
    2. 如果category为DEFAULT,那么可以不用管。
    3. 如果一个intent-filter有多个category,那么匹配一个即可。
    4. 如果intent-filter有多个data标签,那么匹配一个即可。
    5. 如果自定义Intent-filter,Action可以自定义,但是category必须使用系统提供的
    6. 如果intent-filet既有scheme又有mimeType,那么在设置数据的时候就必须同时指定scheme和type,使用的API是intent.setDataAndType(Uri,Type);
    7. 一般用于不同app之间的调用
  3. 获取数据
    Intent intent = getIntent();
    Uri data = intent.getData();

2.2 显示跳转

  1. 定义:通过字节码或者要跳转的Activity的全类名进行跳转。
  2. 显示跳转获取数据
    1. 传递数据
      1. intent.putExtra(key,value);
    2. 获取数据
      1. intent.getStringExtra(key);

2.3 Intent可以携带的数据种类

1. 8种基本数据类型和String以及他们的数组形式
2. 实现了Parcelable(序列化对象的接口,类似Serializable)接口的对象
3. 实现了Serializable接口的对象

你可能感兴趣的:(android基础)