zoukankan      html  css  js  c++  java
  • 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)明显我们上面这些修改成显式意图省略了在清单文件声明,更方便

  • 相关阅读:
    Linux网络相关命令firewalld和netfilter、iptables 使用(6/22)
    Linux时间设置与iptables命令
    负载均衡集群ipvsadm命令及基本用法
    LVS原理详解以及部署
    linux比较两个文件的不同(6/21)
    如何使用sql函数平均值、总数、最小值、最大值
    python中数据类型转换
    使用 getopt 处理命令行长参数
    Mysql常用命令行大全
    C#控制台程序使用Log4net日志组件
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4796112.html
Copyright © 2011-2022 走看看