android学习笔记(4)Intent初级学习
这节课程讲解了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中调用这个activity了.
//为了方便,把这个跳转放在一个button点击事件中去.
Intent intent=new Intent();
intent.setClass(MainActivity.this,SecondActivity.class);//参1是packageContext,一般是指向MainActivity自己;参2是cls指向要调用的activity的class
startActivity(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啦!想一想,安卓的软件是不是很容易?
还没有评论,来说两句吧...