• Android(java)学习笔记162:开发一个多界面的应用程序之两种意图


    1.两种意图:

    (1)显式意图:

    在代码里面用intent设置要开启Activity的字节码.class文件

    (2)隐式意图:

    Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现在代码里面设置intent的action和data,框架通过解析清单文件去找到Activity,然后才去开启

     (3)比较 显式意图 和 隐式意图 优缺点?

    显式意图:

                 优点:代码编写很简单,无需额外的配置,只需要指定要激活的组件字节码.class就可以了,不需要在清单文件中配置意图过滤器<intent-filter>

                 缺点:代码的耦合性比较强。(高内敛、低耦合是我们追求的

                 应用场景:自己应用程序开启自己的界面,推荐使用显示意图,效率高。

    隐式意图:

                 应用场景:开启别人的应用程序的界面  或者 自己的界面,想让别的应用程序开启。

    2.在Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现笔记中,使用是隐式意图;

    这里我们修改成显示意图,如下:

    (1)MainActivity.java,修改为如下:

     1 package com.itheima.rpcalc;
     2 
     3 import android.app.Activity;
     4 import android.content.Intent;
     5 import android.net.Uri;
     6 import android.os.Bundle;
     7 import android.view.View;
     8 import android.view.View.OnClickListener;
     9 import android.widget.Button;
    10 import android.widget.EditText;
    11 
    12 public class MainActivity extends Activity {
    13     private Button bt_start;
    14     private EditText et_name;
    15 
    16     @Override
    17     protected void onCreate(Bundle savedInstanceState) {
    18         super.onCreate(savedInstanceState);
    19         setContentView(R.layout.activity_main);
    20         bt_start = (Button) findViewById(R.id.bt_start);
    21         et_name = (EditText) findViewById(R.id.et_name);
    22         bt_start.setOnClickListener(new OnClickListener() {
    23             @Override
    24             public void onClick(View v) {
    25                 // 跳转到第二个界面
    26                 Intent intent = new Intent(MainActivity.this,CalcActivity.class);
    27                 intent.setData(Uri.parse("calc://"+et_name.getText().toString()));//传递数据给另一个CalcActivity,但是不用在清单文件中注册
    28                 startActivity(intent);
    29             }
    30         });
    31     }
    32 }

    同时这里的AndroidMainfest.xml如下:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="com.itheima.rpcalc"
     4     android:versionCode="1"
     5     android:versionName="1.0" >
     6 
     7     <uses-sdk
     8         android:minSdkVersion="8"
     9         android:targetSdkVersion="17" />
    10 
    11     <application
    12         android:allowBackup="true"
    13         android:icon="@drawable/ic_launcher"
    14         android:label="@string/app_name"
    15         android:theme="@style/AppTheme" >
    16         <activity
    17             android:name="com.itheima.rpcalc.MainActivity"
    18             android:label="@string/app_name" >
    19             <intent-filter>
    20                 <action android:name="android.intent.action.MAIN" />
    21                 <category android:name="android.intent.category.LAUNCHER" />
    22             </intent-filter>
    23         </activity>
    24        <!--  声明一个新的界面 -->
    25        <!--   这里只需要声明一下Activity,不用注册data,action,schem等等数据-->
    26         <activity android:name="com.itheima.rpcalc.CalcActivity">
    27            
    28         
    29         </activity>
    30     </application>
    31 
    32 </manifest>

    其他代码不做修改。

    (2)明显我们上面这些修改成显式意图省略了在清单文件声明,更方便

  • 相关阅读:
    《算法导论》读书笔记之第16章 贪心算法—活动选择问题
    C语言综合实验1—学生信息管理系统
    《算法导论》读书笔记之第15章 动态规划[总结]
    《算法导论》读书笔记之第11章 散列表
    模板类中定义list<T>::iterator iter在g++下不识别的解决办法
    C语言参考程序—无符号一位整数的四则运算
    《算法导论》读书笔记之第15章 动态规划—最优二叉查找树
    C语言综合实验2—长整数运算
    递归与尾递归总结
    《算法导论》读书笔记之第13章 红黑树
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4796112.html
Copyright © 2020-2023  润新知