第二章 先从看到的入手探究活动

前言:今天凌晨发布的一篇博客,醒来看看访问竟然有400多次,实在是莫大鼓励!
我感觉还是说的太官方,尽量通俗易懂一点吧,毕竟下面等会要贴代码了

  • 2.1活动是啥子?
  • 2.2活动基本用法
  • 2.3使用Intent
  • 2.4生命周期
  • 2.5互动四大启动模式
  • 2.6实践
  • 2.7总结

(我尽量用我所认知的了解去解释这些东西)

一,活动是什么东西

我所理解的活动就是看到的页面Activity


二,活动基本用法

比如:第一章我说过的,
XML+JAVA+AndroidMainifest 这就是代码结构
(我只简单说下代码,XML部分等会补充)
一个负责页面,一个负责代码,一个负责配置清单这种常识就不必多说(跳转页面、涉及权限的必须要配置)
你还需要学会如下技能:

Toast提示(其实就是提示,也可以自定义漂亮的)
用途我我都不说了,手机很常见的

    Toast.makeText(this, "提示内容", 0).show();
    //上下文,提示内容,提示时间只有两种0/1代表长短 (半秒或者1秒)

这里写图片描述

Menu菜单(说白了就是“设置”选项,你)
你在xml文件中多写几个,就多几个选项

  //现在是在Activity文件中:
    @Override//一个Activity自动生成的方法,目的是创建菜单功能
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override//这是我自己重写的方法,监听菜单事件(对应menu文件夹下main.xml文件)
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.action_settings:

                Toast.makeText(this,"提示内容" , 1).show();
                break;

            }
            return true;
        }

这里写图片描述

全屏显示(没有顶部状态栏那种全屏)

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //就这一行代码,但是要写在加载页面的方法之前,也就是这个方法上面一行 setContentView()

销毁页面:
返回就是销毁,手动销毁就是
finish();方法,
这个我等会解释下安卓常见点击事件


安卓的点击事件五花八门
我只说常见的一种

/*Activity实现接口 android.view.View.OnClickListener别选错了
  原理是:实现接口方法传参数,得到按钮并主持监听,然后判断点击事件,(应该都能看懂的)
*/

public class MainActivity extends Activity implements OnClickListener {
    private  Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.button1);//得到控件
        button.setOnClickListener(this);           //注册监听
    }

    @Override
    public void onClick(View v) { 
        switch (v.getId()) {
        case R.id.button1:
            //点击触发
            break;
        }   
    }

}
<!-- 默认的相对布局,w代表横向,h代表高度-, m代表占完,w代表用多少占多少懂->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button 
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"  />


</RelativeLayout>

*三,研究下Intent

安卓各大组件连接的桥梁,不多解释
显示和隐式两种,其实我想说,再折腾一会我都要晕了,就是填转页面呗!
Intent跳转显示和隐式的理解?
效果相同,
显示配置Activity,跳转,
隐式配置别名,直接跳转别名,

Intent跳转基础版本
XML配置

  <activity  android:name="包名.类"/>

JAVA代码:

     Intent intent=new Intent(本类.this,目标类名.class);
             startActivity(intent);

Intent跳转隐式版本
XML配置

  <activity android:name="com.example.app_home.C2_main">
                   <intent-filter>
                   <action android:name="自定义名字" />
                   <category android:name="android.intent.category.DEFAULT"/>           
                   </intent-filter>
           </activity>          

JAVA代码

intent.setAction("配置文件中自定义的名字");
                    startActivity(intent);      

配置清单 intent-filter中加入一行:
代码中就哟加入一行: intent.addCategory(“测试”);不然就会提示找不到,
可以看出隐士的 标签就是一个过滤器的存在
我会告诉你这个Intent能跳到浏览器,拨号盘 ,全是隐士意图的功劳
比如:跳浏览器百度主页

Intent intent=new Intent(Intent.ACTION_VIEW);                     //指明调用内置动作是view
            intent.setData(Uri.parse("http://www.baidu.com"));    //传入字符串解析成网址
            startActivity(intent);                                //跳转

比如:跳拨号盘

Intent intent=new Intent(Intent.ACTION_DIAL);                     //指明调用内置动作dial
    intent.setData(Url.parse("tel:10086"));                      //传入字符串解析成电话号码
    startActivity(intent);                                       //跳转

发短信打电话等等、、、不解释了
setData主要是指定我们操作的数据的一个方法
对应在配置文件中国的标签,
这个标签能干吗呢?
1.scheme 指定协议 比如http://
2.host 数据主机名,比如传入的网址www.baidu.com
3.port 端口
4.path 域名
5.tmimeType 类型
其实我也不明白,不过意思应该是就说哪个网址的规定要求,了解即可


*四,Intent传递数据


Intent是四大组件的纽带,传递数据的作用
1.Bundle的意义?
2.Intent传递对象?

首先看Intent的传递关系:

理论部分:
1.数据依靠于Intent传递数据
2.Intent依靠于Bundle当做数据包

Intent提供四种方法:
putExtras(Bundle data)                      //直接存入 数据包
getExtras();                                //直接取出 数据包;

putExtra(String key,Xxx value)              //以键值方式 存入数据
getXxxExtra(String name,Xxx defaultValue)   //以指定key 取出数据
Bundle提供四种方法:
putXxx(String key, Xxx value)                   //以键值方式 存入数据
getXxx(String key, Xxx defalutValue )           //以指定key  取出数据

putSerializable(String key,Xxx defalutValue);    //以键值方式存   可序列化的对象
getSerializable(String key)                      //以指定key取出 可序列号的对象

1.Bundle的意义是什么?

传递数据用Bundle和不用的区别:

//不用Bundle
        intent.putExtra("id",str); 
//用Bundle传递数据
        Bundle bundle=new Bundle();
        bundle.putString("id", str);
        intent.putExtras(bundle);

这传递语法本身意义上是相同的:
那么可以理解为安卓为Intent提供了一种叫做Bundle封装机制,
写于不写它都是存在的,

所以:用不用Bundle传递效果都一样的

接收数据用不用Bundle的区别

//不用Bundle
        Intent intent=getIntent();
        String aa=intent.getStringExtra("id");
//用Bundle接收数据
        Intent intent=getIntent();
        Bundle bundle=intent.getExtras();
        String aa=bundle.getString("id");

这个代码中: 用Bundle 或者 不用Bundle都能接收到数据

所以: 用不用Bundle接受效果都一样的


总结:
Bundlle写不写都不是很重要了,那么Bundle代表的是封装的数据,
上面有两种传递,两种接收,完全可以混写的使用也毫无关系了!
主要:方便二次传递的时候我们可以直接传递Bundle即可


2.Intent 传递对象!
Intent可以传递值 可以传递对象,
比如传递一个封装的GetSet

  intent.putExtra("id", new Beran("你好"));

或者用Bundle传递

        Bundle bundle2=new Bundle();
        bundle2.putSerializable("id",new Beran("你好"));
        intent.putExtras(bundle2);

效果都是一样的,

直接取对象的写法

            Intent intent2=getIntent();
            Beran beran=(Beran) intent2.getSerializableExtra("id");

取Bundle再取对象也是一样的

            Intent intent2=getIntent();
            Bundle bundle=intent2.getExtras();
            Beran beran=(Beran) bundle.getSerializable("id");

(有点晕了,过几天再更,看书太累)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值