Android学习笔记1

1.Meun:

  • res->New->Directory新建文件夹
  • New->Menu resource file新建菜单文件
  • 在菜单文件中添加:
  • <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><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>
  • 在Activity中重写onCreateOptionsMenu(Menu menu

public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        //得到一个MenuInflater对象,调用inflate()方法,第一个参数为用于指定我们通过哪一个资源文件创建菜单,第二个菜单项加入到哪一个Menu对象中
        return true;
        //允许菜单显示
    }

 //菜单添加响应
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
                break;
            default:
        }
        return true;
    }

2. Intent

是Aandroid程序中各组件之间进行交互的一种方式。
显式Intent与隐式Intent的区别
显式Intent:通过组件名指定启动的目标组件,比如startActivity(new Intent(A.this,B.class)); 每次启动的组件只有一个
隐式Intent:不指定组件名,而指定Intent的Action,Data,或Category,当我们启动组件时, 会去匹配AndroidManifest.xml相关组件的Intent-filter,逐一匹配出满足属性的组件,当不止一个满足时, 会弹出一个让我们选择启动哪个的对话框
显式Intent:

public void onClick(View view) {
                Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
                //构造一个intent(上下文,目标活动),在上下文这个活动的基础上打开目标活动
                startActivity(intent);
                //执行这个INTENT
            }

隐式Intent:
.xml文件中

<intent-filter>
     <action android:name="com.example.activitytest.ACTION_START" />
     //当前活动可以响应com.example.activitytest.ACTION_START这个ACTION
     <category android:name="android.intent.category.DEFAULT" />
     //附加信息,能够响应Intent中还有可能带有的CATEGORY
     //只有action、category中的内容能同时匹配Intent中指定的action、category时,才可以享用Intent
  </intent-filter>

Activity中:

public void onClick(View view) {
                Intent intent=new Intent("com.example.activitytest.ACTION_START");
                startActivity(intent);
            }

3.Intent中增加category

Activity中:
intent.addCategory("com.example.activitytest.MY_CATEGORY");
.xml文件中
<category android:name="com.example.activitytest.MY_CATEGORY" />

4.intent打开网页:

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
<data必须和Intent中携带的的Data完全一致,才响应应该的intent.

<activity
            android:name=".ThirdActivity">
            <intent-filter tools:ignore="AppLinkUrlError">
                <action android:name="android.intent.action.VIEW" />
                //当前活动响应action是intent.action.VIEW的常量值
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="http"/>
                //指定了数据的协议必须是HTTP
            </intent-filter>
        </activity>

intent拨号页面
Intent intent=new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:10086"));
                startActivity(intent);


5.putExtra()传数据

FirstActivity:
String data="Hello SecondActivity";;
                Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
                intent.putExtra("extra_data",data);
                startActivity(intent);
SecondActivity:
Intent intent=getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("SecondActivity",data);

6.startActivityForResult()测试

FirstActivity:
 Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
                startActivityForResult(intent,1);

SecondActivity:
Button button2=(Button) findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                intent.putExtra("data_return","Hello FirstActivity");
                setResult(RESULT_OK,intent);
                finish();

            }
        });

7.Dialog主题设置:

<activity
            android:name=".DialogActivity"
            android:theme="@style/Theme.AppCompat.Dialog">
</activity>

8.onSaveInstanceState()暂存数据

 protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
    }


9.活动状态

onCreate:新创建    ---完全被覆盖----->onPause、onStop-------恢复---->onRestart、onStart、onResume
onStart:开始       ---没有完全被覆盖----->onPause-------恢复---->onResume
onResume:交互                        -----销毁---->onPause、onStop、onDestory

10.Activity四种launchMode:

在AndroidManifest.xml配置<activity>的Android:launchMode属性

  • standard每次启动都会创建该活动的一个新的实例。
  • singleTop在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。如果已经存在,但不是栈顶,则创建
  • singleTask次启动活动时会系统首先检查返回栈中是否已经存在该活动的实例,如果发现已经存在则直接使用该实例,并把该实例之上的所有活动统统出栈;如果没有发现就会创建一个新的实例。
  • singleInstance会启用一个新的返回栈来管理这个活动。

11. 获取当前实例的类名,并通过LOg打印

 Log.d("BaseActivity",getClass().getSimpleName());

12.杀掉当前进程

android.os.Process.killProcess(android.os.Process.myPid());

13.Intent规范写法:

public static void actionStart(Context context,String data1,String data2){
        Intent intent=new Intent(context,SecondActivity.class);
        intent.putExtra("parm1",data1);
        intent.putExtra("parm2",data2);
        context.startActivity(intent);
    }
通过:SecondActivity.actionStart(FirstActivity.this,"data1","data2");即可实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值