对应若水老师的视频教程第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的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啦!想一想,安卓的软件是不是很容易?
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-14 22:13:52