1.创建Android项目工程:AndroidTest

创建过程可参考网上诸多教程。

2.添加新的Activity,步骤如下

a. 在layout文件夹上右键,New-Activity-相应Activity,(如Basic Activity).

b. 配置Activity

填写Activity Name,Layout Name,Title,Package name等。

注意:Package name需填写项目包名称,如com.androidtest(初学,不知道对不对,请指正).

c. 修改activity_second.xml和content_second.xml

如添加一个TextView,下面是content_second.xml的代码,我认为activity_second.xml应该是layout的一个框架,而content_second.xml为该框架的内容界面.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_second"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.androidtest.SecondActivity"
tools:showIn="@layout/activity_second">
<TextView
android:text="The Second Activity"
android:id="@+id/textView"
app:layout_anchor="@+id/include"
app:layout_anchorGravity="center_vertical|left"
android:layout_gravity="center_vertical|right"
android:layout_height="42dp"
android:layout_width="match_parent"
android:textSize="30sp" />
</RelativeLayout>

d.到此Activity就添加好了,下面是预览界面

3.Activity之间的跳转

a.在activity_main.xml添加按钮

代码如下:

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Sencond Activity"
android:onClick="onClick"/>

注意:因android:text="Sencond Activity"采用了硬编码字符串,所以AS给了提示(超智能),此处先不修改了,提示如下:

b.在MainActivity添加Button的onClick事件处理

/**
* 按钮Sencond Activity 事件处理
*/
public void onClick(View view)
{
try
{
startActivity(new Intent("com.AndroidTest.SecondActivity"));
}
catch (Exception ex)
{
     // 显示异常信息
Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show();
}
}

4.运行及异常处理

a. 异常信息

添加好了Activity,代码也写好了,接下来就是运行了,结果悲剧了,出现了异常:No Activity found to handle Intent { act=com.AndroidTest.SecondActivity }

见下图:

b. 解决办法

Intent分为显示Intent和隐式Intent;使用显示Intent时,可以不添加<intent-filter>标签,但是隐式Intent必须添加<intent-filter>标签,所以解决方法有两种:

第一种:

//将3.b中的代码修改为显示Intent
public void onClick(View view)
{
try
{
//startActivity(new Intent("com.AndroidTest.SecondActivity"));//隐式intent
Intent intent = new Intent(this, SecondActivity.class);//显示intent
startActivity(intent);
}
catch (Exception ex)
{
// 显示异常信息
Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show();
}
}

第二种:

修改AndroidManifest.xml中SecondActivity部分,添加<intent-filter>标签.

原代码:

<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second"
android:theme="@style/AppTheme.NoActionBar"></activity>

修改后代码:

<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="com.AndroidTest.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

c. 异常解释

每一个通过startActivity()方法发出的隐式Intent都至少有一个category,就是 "android.intent.category.DEFAULT",

所以只要是想接收一个隐式Intent的Activity都应该包括"android.intent.category.DEFAULT" category,不然将导致 Intent 匹配失败。

参见:Android关于No Activity found to handle Intent的问题

d. 最终运行图

5. 总结

学习Android一周,好多知识还没有形成一个整体框架,再接再厉。

Android学习笔记之Android Studio添加新的Activity的更多相关文章

  1. Android学习笔记之Android Studio下创建menu布局文件

    1.创建menu文件夹 Android Studio项目中如果没有menu文件夹,在res文件夹右键,new-Android resource directory: 则会弹出下图对话框,在Resour ...

  2. Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...

    下面是Android的学习笔记,原文地址. 我是使用adb devices出现如下红字错误, 使用第一种方法方法,结果关掉豌豆荚就可以了. android adb启动失败问题 adb server i ...

  3. Android学习笔记(5)----启动 Theme.Dialog 主题的Activity时程序崩溃的解决办法

    新建了一个Android Studio工程,在MainActivity的主界面中添加了两个按钮,点击其中一个按钮用来启动 NormalActivity,点击另一按钮用来启动DialogActivity ...

  4. Android学习笔记之 android:collapseColumns ,android:shrinkColumns 和stretchColumns

    摘自:http://blog.csdn.net/sjf0115/article/details/7213565/ TableLayout是一个使用复杂的布局,最简单的用法就仅仅是拖拉控件做出个界面,但 ...

  5. android学习笔记45——android的数据存储和IO

    android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...

  6. Android学习笔记_79_ Android 使用 搜索框

    1.在资源文件夹下创建xml文件夹,并创建一个searchable.xml: android:searchSuggestAuthorityshux属性的值跟实现SearchRecentSuggesti ...

  7. Android学习笔记_22_服务Service应用之—与Activity进行相互通信的本地服务

    一.启动服务的两种方法方法: 第一种:  startService()和stopService()启动关闭服务.适用于服务和Activity之间没有调用交互的情况.如果相互之间需要方法调用或者传递参数 ...

  8. android学习笔记(9)android程序调试学习

    相应若水老师的第十四课 一,Log日志输出 Log.v(tag,message);        //verbose模式,打印最具体的日志  Log.d(tag,message);        // ...

  9. Android学习笔记(1)—Android Studio安装

    Android Studio 是一个全新的 Android 开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工 ...

随机推荐

  1. Flask-最简单的Python http服务框架使用

    环境准备 Python + pip + Flask sudo easy_install pip sudo pip install flask 代码如下(做了个jieba分词的服务) # encodin ...

  2. RabbitMQ入门(2)——工作队列

    前面介绍了队列接收和发送消息,这篇将学习如何创建一个工作队列来处理在多个消费者之间分配耗时的任务.工作队列(work queue),又称任务队列(task queue). 工作队列的目的是为了避免立刻 ...

  3. Vim练级攻略(转)

    转自平凡的世界:http://www.ccvita.com/ 前言今天看到这篇文章,共鸣点非常多.它把Vim使用分为4个级别,目前我自己是熟练运用前面三级的命令,在培养习惯使用第四级.完全就是我这一年 ...

  4. sa learning

    后缀数组之前一直在给队友搞,但是这个类太大了,预感到青岛八成会有,于是自己也学习一下,记录一下做题的历程 所用的模板暂时来自于队友的倍增nlogn da算法 int t1[maxn] , t2[max ...

  5. Javascript 十移跳转页面

    <srcipty> var t = 10; function openwin(){ t -= 1; if( t==0){ location.href='prototype.html'; } ...

  6. JavaScript之右下角广告

    网站中,我们都遇到想这样的悬浮广告,我们先给图片设置右下角悬浮属性,关闭按钮键也就是节点的删除: window.onload = function(){ var TipBox = document.g ...

  7. Android6.0------权限申请RxPermissions

    前面写了Android6.0权限介绍和权限单个,多个申请,用的是纯Java代码,本文主要说的是借助第三方库来实现权限申请. 借助第三方库 RxPermissions来申请6.0权限. RxPermis ...

  8. 【原创】Centos 7利用软件Raid搭建ISCSI过程

    测试机器安装了4块2T硬盘,一块320G硬盘,利用320G硬盘安装CentOS 7系统,在CentOS 7系统上利用4块2T硬盘组建Raid 0,再配置iSCSI存储.注意,本文中的RAID指的是软R ...

  9. nyoj762——分解质因数+容斥+二分

    第k个互质数 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 两个数的a,b的gcd为1,即a,b互质,现在给你一个数m,你知道与它互质的第k个数是多少吗?与m互质的 ...

  10. percona innobackupex 遇到 connect to MySQL server as DBD::mysql module is not installed 问题

    percona innobackupex connect to MySQL server as DBD::mysql module is not installed [root@mysql softw ...