2023年7月7日发(作者:)
Intent寻找⽬标组件的两种⽅式:显式Intent:通过指定Intent组件名称来实现的,它⼀般⽤在知道⽬标组件名称的前提下,⼀般是在相同的应⽤程序内部实现的。隐式Intent:通过Intent Filter来实现的,它⼀般⽤在没有明确指出⽬标组件名称的前提下,⼀般是⽤于在不同应⽤程序之间。⼀.显式Intent ⼀般情况下,⼀个应⽤程序中需要多个屏幕,即是多个Activity类,并且在这些Activity之间进⾏切换通过Intent机制来实现的。在同⼀个应⽤程序中切换Activity时,我们通常都知道要启动的Activity具体是哪⼀个,因此常⽤显式的Intent来实现的。 下 ⾯的例⼦是在同⼀应⽤程序中MainActivity启动SecondActivity,下⾯的代码中,主要是为“转到SecondActivity”按 钮添加了OnClickListener,使得按钮被点击时执⾏onClick()⽅法,onClick()⽅法中则利⽤了Intent机制,来启动 SecondActivity,关键的代码是22~25⾏。1. 2.
3. import ty;4. import ;5. import ;6. import ;7. import kListener;8. import ;9.
10. publicclass MainActivity extends Activity {11. private Button btn;12. @Override13. publicvoid onCreate(Bundle savedInstanceState) {14. te(savedInstanceState);15. setContentView();16.
17. btn = (Button)findViewById();18. //响应按钮btn事件19. lickListener(new OnClickListener() {20. @Override21. publicvoid onClick(View v) {22. //显⽰⽅式声明Intent,直接启动SecondActivity23. Intent it = new Intent(,);24. //启动Activity25. startActivity(it);26. }27. });28. }29. }1. package ty;2.
3. import ty;4. import ;5. import ;6. import ;7. import kListener;8. import ;9.
10. publicclass SecondActivity extends Activity {11. private Button secondBtn;12. @Override13. protectedvoid onCreate(Bundle savedInstanceState) {14. te(savedInstanceState);15. setContentView();16.
17. secondBtn=(Button)findViewById(Btn);18. //响应按钮secondBtn事件19. lickListener(new OnClickListener() {20. @Override21. publicvoid onClick(View v) {22. //显⽰⽅式声明Intent,直接启动MainActivity23. Intent intent = new Intent(,);24. //启动Activity25. startActivity(intent);26. }27. });28. }29. }清单⽂件,16~18⾏为SecondActivity在清单⽂件⾥的声明1. 2.
8.
⼆.隐式Intent 下⾯是同⼀应⽤程序中的Activity切换的例⼦,需要中增加Activity的声明,并设置对应的Intent Filter和Action,才能被Android的应⽤程序框架所匹配。1. package ty;2.
3. import ty;4. import ;5. import ;6. import ;7. import kListener;8. import ;9.
10. publicclass MainActivity extends Activity {11. private Button btn;12.
13. @Override14. publicvoid onCreate(Bundle savedInstanceState) {15. te(savedInstanceState);16. setContentView();17.
18. btn = (Button) findViewById();19. // 响应按钮btn事件20. lickListener(new OnClickListener() {21. @Override22. publicvoid onClick(View v) {23. // 实例化Intent24. Intent it = new Intent();25. //设置Intent的Action属性26. ion("_ACTION");27. // 启动Activity28. startActivity(it);29. }30. });31. }32. }1. package ty;2.
3. import ty;4. import ;5.
6. publicclass SecondActivity extends Activity {7.
8. @Override9. protectedvoid onCreate(Bundle savedInstanceState) {10. te(savedInstanceState);11. setContentView();12. }13. }1. 2.
8.
对 于显⽰Intent,Android不需要再去做解析,因为⽬标组件很明确。Android需要解析的是隐式Intent,通过解析,将Intent映射 给可以处理该Intent的Activity,Service等。Intent的解析机制主要是通过查找已经注册在 中的所有IntentFilter以及其中定义的Intent,最终找到匹配的Intent。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688674693a161658.html
评论列表(0条)