Android学习-第一行代码之P38-P80笔记

P38
在活动中使用Menu(右上角的三个小点)
1.
创建过程(略)
在main.xml添加具体的菜单项
<item
    android:id="@+id/add_item" //标识符
    android:title="Add" /> //指定名称
......
2.
回到活动重写onCreateOptionsMenu()方法,重写方法快捷键ctrl+o
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true; //通过get...方法得到MenuInflater对象,再调用inflate就可以创建菜单
}         
3.
菜单被创建还要重写onOptionsItemSelected()方法
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.add_item:
        Toast.makeText("you clicked add",Toast.LENGTH_SHORT).show();
        break;
    ......
P40
销毁活动:finish();

P42
显示Intent:Intent其中一个构造函数接受两个参数,第一个参数context要求提供一个
启动活动的上下文,第二个参数Class则是指定想要启动的目标活动
startActivity()方法是专门用于启动活动的,接受Intent参数

button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        startActivity(intent);
    }
}); //构建intent,启动意图

P44
隐士intent:
1.
配置<intent-filter>
<intent-filter>
    <action android:name="com.example.activitytest.ACTION_START" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
//action指明活动可以相应com......,<category>包含附加信息,只有同时匹配这两个
才可以相应该intent

2.
修改活动的点击事件
    Intent intent = new Intent("com.example.activitytest.ACTION_START");
    //直接将action的串传入即可响应
3.
每个intent只能指定一个action,但是可以指定多个category
//可以调用addCategory()方法来添加一个category,还要在标签声明

4.
    Intent intent = new Intent(Intent.ACTION_VIEW); //指定action是Intent.ACTION_VIEW
    intent.setData(Uri.parse("http://www.baidu.com")); //解析为uri对象
    startActivity(intent);  //调用setdata方法将对象传入

5.
新建活动尝试打开网页
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name"android.intent.category.DEFAULT" />
        <data android:scheme"http" />
    </intent-filter>  //scheme用于指定数据的协议部分
//配置了当前活动能够响应的action是一个常量值,并且指定数据的协议是http,能够相应一个打开网页的intent了

6.
向下一个活动传递数据:
a.
在first有一个串,先用显示intent启动second,通过putExtra()方法传递字符串,putExtra()
接受两个参数,第一个是键,第二个是数据
    intent.putExtra("extra_data", data);
b.
在second: Intent intent = getIntent();
       String data = intent.getStringExtra("extra_data");
    //getIntent()方法启动intent,调用get...方法来获取数据
7.
返回数据给上一个活动:
a.
在first:    Intent intent = new Intent(...this,...class);
    startAcitivityForResult(intent, 1); //启动活动,请求码1
b.
在second给按钮注册点击事件
    button2....
        Intent intent = new Intent();
        intent.putExtra("data_return", "Hello first");
        setResult(RESULT_OK, intent);
        finsh(); //setResult专门用于向上一个活动返回数据
//第一个参数用于上一个活动返回处理结果,第二个把intent传回去
//之后重写onActivityResult()方法,完成work

P58
......
android:theme="style/Theme.AppCompat.Dialog">
这里让活动使用对话框式的主题

P62
活动被回收保存数据:使用onSaveInstanceState()回调方法,保证活动被回收之前一定会被
调用,代码(略),Intent还可以结合Bundle一起用于传递数据

P64
活动的启动模式:在<activity>标签指定android:launchMode属性来选择启动模式
android:launchMode="singTop"

standard:“连续创建,需要连续多次back才能退出程序”
singleTop:已经在栈顶的活动不会重复创建
singleTask:每次启动活动会检查是否存在该活动的实例,若有,会直接使用该实例,并把它之上的活动统统出栈,若无则创建新的

singleInstance:
在second中加入这个启动模式
在second加入intent: Intent intent = new Intent(Second...,Third...);
之后发现first和third在一个栈

P72
知晓在哪个活动:
新建BaseActivity类,然后都继承它,之后(略)

随时随地退出程序:
现在都直接划掉用得上吗0.0
(略)

启动活动的最佳写法:
在second中添加一个actionStart()方法,完成intetnt的构建

P78
TextView:
android:gravity="center" //指定文字的对齐方式
textsize,textcolor指定文字大小和颜色
//还有很多属性,用到可以查阅文档

猜你喜欢

转载自blog.csdn.net/netbar4/article/details/81509962