第一行代码 读书笔记 2

1.隐藏标题栏

//一定要在setContentView之前执行
requestWindowFeature(Window.FEATURE.NO.TITLE);
setContentView(R.layout.first_layout);

2.Toast

android中非常好的提醒方式

Toast.makeText(content,msg,Toast.LENGTH_SHORT).show()

makeText()静态方法获得Toast实例。第一个参数是上下文环境,一般是Activity.this,把活动本身当做Context对象传入。 第二个参数显示信息,第三个参数显示时长。

3.活动中显示菜单

  • 创建res/menu/main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/add_item"
        android:title="Add"/>
    <item
        android:id="@+id/remove_item"
        android:title="Remove"/>
</menu>
  • 重写onCreateOptionsMenu()方法
public boolean onCreateOptionsMenu(Menu menu) {
/*getMenuInflater()得到MenuInflater对象,调用inflate()为当前活动创建菜单,它的第一个参数指定用哪个资源文件创建菜单,第二个指定菜单项添加到哪一个menu对象中*/
getMenuInflater().inflate(R.menu.main, menu);
//返回true表示允许菜单显示,如果是false菜单无法显示
return true;
}
  • 按下menu键,显示菜单。

4.销毁活动

  • 按下back键销毁当前活动
  • 活动中调用finish()方法

5.使用Intent在活动中穿梭

1.显式Intent

//第一个参数启动活动的上下文,第二个参数 启动的目标活动
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);

2.隐式Intent

指定一系列抽象的action和category,data信息,交给系统分析这个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>
Intent intent = new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);

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

intent.addCategory("com.example.activitytest.MY_CATEGORY");
//指定Intent正要操作的数据
intent.setData(Uri.parse("http://www.baidu.com"));

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

1. android:scheme

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

2. android:host

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

3. android:port

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

4. android:path

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

5. android:mimeType

用于指定可以处理的数据类型,允许使用通配符的方式进行指定。

只有<data>标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够响应该 Intent。

3.使用Intent传递数据

//第一个参数是键,用于后面从 Intent中取值,第二个参数才是真正要传递的数据
 intent.putExtra("extra_data", data);
//在第二个活动中得到Intent对象,并获取数据
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");

4.返回数据给上个活动

startActivityForResult()第一个参数Intent,第二个参数是请求码,用于在之后的回调中判断数据的来源。

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
/*内建Intent,用setResult()返回数据.第 一 个 参 数 用 于 向 上 一 个 活 动 返 回 处 理 结 果,一般只使用RESULT_OK或RESULT_CANCELED这两个值,第二个参数则是把带有数据的 Intent 传递回去,然后调用了 finish()方法来销毁当前活动。*/
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();
}

//SecondActivity被销毁之后会回调上一个活动的 //onActivityResult()方法,因此我们需要在 FirstActivity //中重写这个方法来得到返回的数据,如下所示:
@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:
    }
}

第一个参数 requestCode,即我们在启动活动时传入的请求码。
第二个参数resultCode,即我们在返回数据时传入的处理结果。
第三个参数data,即携带着返回数据的Intent。
由于在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动,每一个活动返回的数据都会回调到 onActivityResult()这个方法中,因此我 们 首 先 要 做 的 就 是 通 过检requestCode的值来判断数据来源。确定数据是从SecondActivity返回的之后,我们再通过resultCode的值来判断处理结果是否成功。

如果用户在SecondActivity不是通过点击按钮,而是通过back键回到FirstActiivity,需要重写onBackPressed()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值