显式和隐式Intent来启动活动
来源:互联网 发布:淘宝订单号大小怎么看 编辑:程序博客网 时间:2024/05/29 19:58
先看显式效果图跟代码:
这里我们用显式Intent打开了一个美国队长的活动,这里有个按钮用于换图。
布局文件就不放了哈,那些按钮初始化后,直接在onCreate()中为打开活动的按钮设置监听事件
btn_captainAmerica.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,C_Activity.class); intent.putExtra("NAME","美国队长"); startActivity(intent); } });
以上是在主活动中完成,然后再创建一个名为C_Activity的活动用来换图和接收NAME
public class C_Activity extends AppCompatActivity { private Button btn_changer; private ImageView img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_c_); setTitle("美国队长"); String name = getIntent().getStringExtra("NAME"); Toast.makeText(C_Activity.this,"我是"+name,Toast.LENGTH_LONG).show(); /*这里定义一个Toast,第一个参数是上下文,第二个参数是Toast显示的文本内容,第三个是Toast显示的时长,最后一定要细心加细心,因为我常常会忘了加.show(),不然你会看不到文本内容*/ btn_changer = (Button) findViewById(R.id.btn_changer); img = (ImageView) findViewById(R.id.img_s); btn_changer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { img.setImageResource(R.drawable.c2); //换图用到setImageResource() } }); }}
怎样?显示Intent是否easy,接下来就是隐式Intent了。
在onCreate中为运用隐式的按钮设置监听事件
btn_baidu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent); } }); btn_dial.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_DIAL);//出现一个打电话界面,需要手动拨打 intent.setData(Uri.parse("tel:10086")); startActivity(intent); } }); btn_call.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL);//直接打给114 intent.setData(Uri.parse("tel:114")); startActivity(intent); } });
这里有四个简单的隐式,因为不用配置当前活动能够响应的action和category,我们来看第一个,首先指定了Intent的action是Intent.ACTION_VIEW,这是一个Android系统内置的动作,然后通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象,再调用Intent的setData()方法将这个Uri对象传递进去。
隐式Intent有趣的是可以更精确地指定当前活动能够响应什么类型的数据。
打开AndroidManifest.xml在中的action和category,只有这两者的内容同时能匹配上Intent中指定的action和category时,这个活动才能响应该Intent。
我们创建一个按钮
btnEat.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction("I_WANT_EAT"); intent.addCategory("JIPAFAN"); startActivity(intent); } });
为了有多个活动能响应这个隐式intent,我们创建两个Activity分别为ActitiyD和ActitiyC
public class ActitiyD extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_actitiy_d); setTitle("第二饭堂"); }}
public class ActivityC extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_c); setTitle("第一饭堂"); }}
最后在AndroidManifest.xml中设置响应的事件
<activity android:name=".ActivityC" android:label="第一饭堂"> <intent-filter> <action android:name="I_WANT_EAT"/>//与你所new的intent一致 <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> <activity android:name=".ActitiyD" android:label="第二饭堂"> <intent-filter> <action android:name="I_WANT_EAT"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="JIPAFAN"/> </intent-filter> </activity>
当你按下按钮时只有第二饭堂能响应,如果你想第一,第二饭堂都能响应,就把 intent.addCategory(“JIPAFAN”);去掉就行了
效果图:
阅读全文
0 0
- 显式和隐式Intent来启动活动
- 使用Intent来启动活动
- #Intent的隐式启动和显式启动
- Intent显式启动和隐式启动
- 使用Intent在启动活动时候来传递数据
- 调用活动,通过intent显式调用
- 活动——使用显式Intent
- 调用活动,通过intent隐式调用
- Android 5.0 禁止使用隐式Intent来启动Service.异常:service intent must be explicit
- Android--Intent启动活动
- Intent显式和隐式启动Activity
- Intent隐式启动
- Intent隐式启动
- 1.销毁活动,监听活动,显示intent与隐式intent
- Android中 intent 显式启动与隐式启动
- Intent显示启动与隐式启动
- Android 5.0 不再允许使用隐式Intent来启动Service
- AIDL通信 android 在5.0以使用隐式Intent方式来启动Service的问题
- 设计模式学习(C++实现)6--桥接模式
- c++内存泄露(三):定位和解决内存泄露
- 散列表双链表处理冲突删除操作O(1)
- 带滚动监听的scrollview 可以用来控制actionbar的显隐
- 伪元素选择器
- 显式和隐式Intent来启动活动
- path_planner--RRT
- 状态机的c语言编程
- 笔记:windows环境下云风pbc嵌入到quick-cocos项目。
- JS把用户输入的大写字母转成小写
- JSONP原理
- 机器学习基础KNN分类算法
- Easyui自带图标统计
- github androrid 源码