当前位置: 代码迷 >> Android >> android学习笔记(四)Intent初级学习
  详细解决方案

android学习笔记(四)Intent初级学习

热度:341   发布时间:2016-04-27 23:33:00.0
android学习笔记(4)Intent初级学习
对应若水老师的视频教程第7课

这节课程讲解了intent,是对动作的抽象描述,是意图的意思,建立一个intent就可以给一个动作给他来执行.inten是android开发的精髓所在.
一,点击按钮实现给一个指定号码打电话
 btn1.setOnClickListener(listener);    private OnClickListener listener =new OnClickListener() {	Intent intent = new Intent();		@Override		public void onClick(View v) {			intent.setAction(Intent.ACTION_CALL);  //给intent赋与打电话的动作			intent.setData(Uri.parse("tel:110"));  //设置电话号码			startActivity(intent);                 //启动			Toast.makeText(MainActivity.this,"打电话给110",Toast.LENGTH_SHORT).show();//显示提示				}	};
二,点击按钮实现给一个指定号码发短信
 btn1.setOnClickListener(listener);    private OnClickListener listener =new OnClickListener() {	Intent intent = new Intent();		@Override		public void onClick(View v) {		case R.id.button1:			intent.setAction(Intent.ACTION_SENDTO);			intent.setData(Uri.parse("smsto:110"));			intent.putExtra("sms_body", "没事,骚扰下~~");  //注意格式			startActivity(intent);			Toast.makeText(MainActivity.this,"发短信给110",Toast.LENGTH_SHORT).show();//显示提示			}	};
三,在一个activity中启动另一个activity
一套activity最基本的要包括这些内容:
1,activity类(xxActivity.java)
2,布局文件(layout/xxx.xml)
3,在配置文件中注册这个activity
 <activity
            android:name="xxxxx"
            android:label="xxxx" >
  ..................
        </activity>

有了这些基本要素,就可以在另一个activity中调用这个activity了.

//为了方便,把这个跳转放在一个button点击事件中去.Intent intent=new Intent();intent.setClass(MainActivity.this,SecondActivity.class);//参1是packageContext,一般是指向MainActivity自己;参2是cls指向要调用的activity的classstartActivity(intent);
配置文件加入:
<activity android:name=".SecondActivity"  //与activity的名字相同	android:label="@string/app_name">  //根据需要自行修改</activity>
以上这些都是最基本的内容,如果你的SecondActivity中有功能,运行时就能实现从MainActivity跳转到SecondActivity去执行它的功能.接下来就是怎么在activity之间传递数据呢?
发送方:
Intent intent=new Intent();intent.setclass(MainActivity.this,SecondActivity.class);intent.putExtra("str","hello"); //putExtra();可以发送许多类型的数据!startActivity(intent);
接收方:
Intent intent=getIntent();Bundle bundle=intent.getExtras();  //bundle是什么鬼?评论上补充.String str=bundle.getString("str");//字符就存进了str中了
接着就有意思了,上面可以理解为:实现点击一个按钮跳转到另一个界面去,接下来得在另一个界面中点击一个按钮又跳回来,并且还要返回一个数据.

在MainActivity中定义:
private final static int REQUEST_CODE=1;  //相当于一个专用暗号,为下面定义的intent所有,如果定义了多个Intent就要分配 不同的暗号,为什么要分配暗号?就是为了一对一,防止多对一或一对多的情况出现
按钮监听中写:
Intent intent=new Intent();intent.setclass(MainActivity.this,SecondActivity.class);intent.putExtra("str","hello");//startActivity(intent);startActivityForResult(intent,REQUEST_CODE);  //startActivity(intent);是无返回值的,这个就有.但要写一个       //onActivityResult方法如下
protected void onActivityResult(int requestCode,int resultCode,Intent data)//学会用方法构造器构造它!{	if(requestCode==REQUEST_CODE)//防止多对一	{		if(resultCode==secondActivity.RESULT_CODE)//防止一对多		{				Bundle bundle=data.getExtras();				String str=bundle.getString("back");				Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show();		}	}}
在SecondActivity中定义:
public final static int RESULT_CODE=1;
按钮监听中写:
Intent intent=new Intemt();intent.putExtra("back","Back Data");setResult(RESULT_CODE,intent); //设置返回值finish();  //kill当前的activity
这样就OK啦!想一想,安卓的软件是不是很容易?

版权声明:本文为博主原创文章,未经博主允许不得转载。

1楼sac761昨天 13:15
bundle用法详解:n一,介绍n    用于不同Activity之间的数据传递n二,重要方法n    clear():清除此Bundle映射中的所有保存的数据。n    clone():克隆当前Bundlen    containsKey(String key):返回指定key的值n    getString(String key):返回指定key的字符n    hasFileDescriptors():指示是否包含任何捆绑打包文件描述符n    isEmpty():如果这个捆绑映射为空,则返回truen    putString(String key, String value):插入一个给定key的字符串值n    readFromParcel(Parcel parcel):读取这个parcel的内容n    remove(String key):移除指定key的值n    writeToParcel(Parcel parcel, int flags):写入这个parcel的内容n 三、与SharedPreferences的区别n  SharedPreferences是简单的存储持久化的设置,就像用户每次打开应用程序时的主页,它只是一些简单的键值对来操作。它将数据保存在一个xml文件中n  Bundle是将数据传递到另一个上下文中或保存或回复你自己状态的数据存储方式。它的数据不是持久化状态。
  相关解决方案