Android学习小结2

来源:互联网 发布:mysql数据库设计优化 编辑:程序博客网 时间:2024/05/19 13:21

想要调用一个活动有三样东西绝对不能少:
在AndroidMainifest中注册
在布局中,布置好id,以及其他属性
在.java中写下
Intent intent = new intent(“在注册好的action的名称”/intent.XX);
可以加上addcategory,控制多个目录
startActivity()来启动intent

隐式启动Activity的intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data,可以是全部或部分匹配
显示启动:
Intent intent = new Intent(first.this,second.class);
startActivity(intent);

规律,个人认为,四大组件无论哪个既然都需要在注册,那么一定会在.Java中使用相同的名称或者ID去匹配


除了加上action 和category之外还能加上
Data:android:scheme 用于数据的协议部分(http)
Android:host 用于指定主机名(www.baidu.com)
Android:port 用于端口,一般随主机名后
Android:path 用于主机与端口之后,如一段网址中跟在域名之后的内容

Intent.ACTION_xx 系列全是Android内部的内置动作
但是部分动作需要本身就需要有的软件,不然无法获取,比如geo获取地理位置,需要百度地图软件

传递数据到下一个活动
上一个活动需要putextra()
下一个活动则getintent().getStringExtra()

传递到上一个活动
同一个思路,申请一个intent putextra传,getStringExtra接受。Intent声明一个data用来储存
第一个活动需要用startActivityForresult()来建立
上一个活动:

button1.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(first.this, "You clicked Button 1", Toast.LENGTH_SHORT).show();                //String data = "Hello SecondActivity";                Intent intent = new Intent(first.this,second.class);                //intent.putExtra("extra_data", data);                startActivityForResult(intent, 1);                // TODO Auto-generated method stub            }        });protected void onActivityResult(int requestCode,int resultCode, Intent data){        switch(requestCode)        {        case 1:            if(resultCode == RESULT_OK)            {                String returnedData = data.getStringExtra("data_return");                Log.v("First",returnedData);            }            break;            default:        }

第二个活动

Button button2 = (Button) findViewById(R.id.button_2);        button2.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent();                intent.putExtra("data_return", "Hello first");                setResult(RESULT_OK,intent);                finish();                // TODO Auto-generated method stub            }        });

总结:
想要调用控件,必须在R.java里面有ID,要声明并联系ID
所谓的intent就是目的过滤器,
目的是什么,将两者通过或者默认名(注册时,要调用Android.xx)联系,和来声明多一个活动
而传递信息,顺着传递,需要putExtra(),第二活动需要getStringExtra()来获取
数据存在intent中
返回数据,则是调用setActivityForResult(),以及上述两种函数联系起来

0 0
原创粉丝点击