android中一个activity实际上可以看做是一个屏幕,屏幕之间的切换实际上也就是也就是活动间的切换,更准确地说,应该是调用,
而在android中是通过intent完成这个动作的
通过apidemo中的一个例子来讲解(AndroidManifafest 和布局文件 为手敲 )
先是对于最根本的AndroidManifafest文件的编辑
-------------------------------------初学者了解-----------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<!-- xmlns类似于C++中的名字域,下面这几句几乎均是默认,不会有太大变化-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.study.intent"
android:versionCode="1"
android:versionName="1.0">
<!-- label是应用的名字,icon是应用的图标-->
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<!--name指明是哪个活动 -->
<activity android:name="Activity1"
android:label="@string/app_name">
<!--Intent对象是一个信息包。
它包含了要接收此Intent的组件需要的信息
(例如需要的动作和动作需要的信息)
和 android 系统需要的信息(要处理此Intent的组件的类别和怎样启动它)
action.MAIN将该Activity作为task的第一个Activity ,没有数据输入,也没有数据返回
category.LAUNCHER可以让一个activity出现在launcher
-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--由于没有intent-filler,Activity2是不能直接启动的-->
<activity android:name="Activity2" > .
</activity>
</application>
</manifest>
--------------------------------------------apidemo中的java代码-------------------------------------------
作为launcher的activity1会在点击图标后启动,进而调用activity2
package com.study.intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Activity1 extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = ( Button ) findViewById ( R.id.btn );
btn.setOnClickListener ( new OnClickListener ()
{
public void onClick ( View v )
{
Intent intent = new Intent ();//建立intent
<pre name="code" class="java">intent.setClass ( Activity1.this , Activity2.class );//设置活动
startActivity ( intent ); finish ();//结束当前活动 } }); } }
只有setClass函数会比较陌生,其中第一个参数是上下文类型context,因此可以把当前的活动设置为当前活动的指针即可,activity是context的继承类,所以这样传参一定是合法的,后面要接受的是一个class类,把要转移到的activity传入函数第二个参数即可
————————————————————————————————————————————————————————————————————
activity2,大部分内容可以写在布局文件中
package com.study.intent;
import android.app.Activity;
import android.os.Bundle;
public class Activity2 extends Activity
{
public void onCreate ( Bundle b )
{
super.onCreate ( b );
setContentView ( R.layout.layout2 );
}
}
activity1的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/leader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/leader"
/>
<Button
android:id="@+id/btn"
android:layout_width="80sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/btn"
/>
</LinearLayout>
activity2的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/text"
/>
</LinearLayout>