《第一行代码》 随手笔记——第二章 Activity 活动


2.2.4

隐藏标题栏

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	<strong>requestWindowFeature(Window.FEATURE_NO_TITLE);</strong>
	setContentView(R.layout.first_layout);
}

requestWindowFeature(Window.FEATURE_NO_TITLE)的意思就是不在活动中显示标题栏,注意这句代码一定要在setContentView()之前执行,不然会报错。


2.3.1

显示Intent

button1.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
		startActivity(intent);
	}
});


2.3.2

隐式Intent

<activity android:name=".SecondActivity" >
    <intent-filter>
        <action android:name="com.example.activitytest.ACTION_START" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
启动:
button1.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		Intent intent = new Intent("com.example.activitytest.ACTION_START");
		startActivity(intent);
	}
});

android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法的时候会自动将这个category添加到Intent中。


每个Intent中只能指定一个action,但却能指定多个category。


2.3.3 更多隐式Intent

1、打开浏览器

button1.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.setData(Uri.parse("http://www.baidu.com"));
		startActivity(intent);
	}
});

另一种方法:

button1.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
<span style="white-space:pre">		</span>Uri uri = Uri.parse("http://www.baidu.com");
		Intent intent = new Intent(Intent.ACTION_VIEW , uri);
		startActivity(intent);
	}
});


还可以在<intent-filter>标签中再配置一个<data>标签,用于更精确地指定当前活动能够响应什么类型的数据。<data>标签中主要可以配置以下内容。

1.        android:scheme

用于指定数据的协议部分,如上例中的http部分。

2.        android:host

用于指定数据的主机名部分,如上例中的www.baidu.com部分。

3.        android:port

用于指定数据的端口部分,一般紧随在主机名之后。

4.        android:path

用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。

5.        android:mimeType


<activity android:name=".ThirdActivity" >
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="http" />
    </intent-filter>
</activity>

说明:我们在ThirdActivity的<intent-filter>中配置了当前活动能够响应的action是Intent.ACTION_VIEW的常量值,而category则毫无疑问指定了默认的category值,另外在<data>标签中我们通过android:scheme指定了数据的协议必须是http协议,这样ThirdActivity应该就和浏览器一样,能够响应一个打开网页的Intent了。


2、拨打电话

button1.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		Intent intent = new Intent(Intent.ACTION_DIAL);
		intent.setData(Uri.parse("tel:10086"));
		startActivity(intent);
	}
});


2.3.5返回数据到上一个活动


startActivityForResult()方法接收两个参数,第一个参数还是Intent,第二个参数是请求码,用于在之后的回调中判断数据的来源。我们还是来实战一下,修改FirstActivity中按钮的点击事件,代码如下所示:

button1.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
		startActivityForResult(intent, 1);
	}
});


第二个activity中,设置返回数据

button2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent();
				intent.putExtra("data_return", "Hello FirstActivity");
				setResult(RESULT_OK, intent);
				finish();
			}
		});
setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED这两个值,第二个参数则是把带有数据的Intent传递回去


第一个activity 处理结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	switch (requestCode) {
	case 1:
		if (resultCode == RESULT_OK) {
			String returnedData = data.getStringExtra("data_return");
			Log.d("FirstActivity", returnedData);
		}
		break;
	default:
	}
}



2.4   activity 生命周期







你可能感兴趣的:(《第一行代码》 随手笔记——第二章 Activity 活动)