Android学习笔记之AndroidStudio添加新的Activity 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_secon
如添加⼀个TextView,下⾯是l的代码,我认为l应该是layout的⼀个框架,⽽l为该框架的内容界⾯.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
xmlns:tools="schemas.android/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学习教程android:layout_gravity="center_vertical|right"
android:layout_height="42dp"
android:layout_width="match_parent"
android:textSize="30sp" />
</RelativeLayout>
d.到此Activity就添加好了,下⾯是预览界⾯
3.Activity之间的跳转
a.在l添加按钮
代码如下:
<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>标签,所以解决⽅法有两种:
第⼀种:
1
23456789101112131415
//将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(); }
}
第⼆种:
修改l 中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 匹配失败。参见:
d. 最终运⾏图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论