在“手機頁面之間的跳轉”一文中我介紹瞭如何運用setContentView()方法切換佈局檔案Layout的方式進行手機頁面間的跳轉,這種適合更改背景,文字顏色,文字內容,但是始終是一個Activity,如果要把主控權移交給另外一個Activity,切換佈局檔案Layout的方式就辦不到了。
如何把主控權移交給另外一個Activity呢?原理:透過Intent物件和startActivity()方法配合來實現。在主程式裡使用startActivity()方法呼叫另外一個Activity,但是最主要的不是這個startActivity()方法,而是Intent物件,Intent在英文中是“意圖”的意思,在主Activity當中,告訴程式自己是什麼,並想要前往哪裡,這就是Intent物件要做的事情了。在主Activity(ActivityOne)裡放置一個按鈕,當單擊這個按鈕的時候,告訴主Activity(ActivityOne)前往ActivityTwo,並在ActivityTwo裡放置一個回到主Activity(ActivityOne)的一個按鈕。
實現步驟
一:佈局檔案編寫
1.1:第一個佈局檔案main.xml
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_height="wrap_content"
android:text="我是ActivityOne"
/>
<Button
android:id="@+id/mainbtn"
android:layout_width="wrap_content"
android:text="呼叫ActivityTwo"
</LinearLayout>
1.2:第二個佈局檔案two.xml
android:text="我是ActivityTwo"
android:id="@+id/twobtn"
android:text="呼叫ActivityOne"
二:程式碼檔案編寫
2.1:MainActivity.java
packagecom.menglin.callactivity;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassMainActivityextendsActivity
{
//宣告一個Button物件
privateButtonmainbtn=null;
@Override
publicvoidonCreate(BundlesavedInstanceState)
super.onCreate(savedInstanceState);
//載入main.xml佈局檔案
setContentView(R.layout.main);
//以findViewById()方法取得Button物件
mainbtn=(Button)findViewById(R.id.mainbtn);
//給Button物件繫結單擊監聽事件
mainbtn.setOnClickListener(listener);
}
//監聽事件
privateOnClickListenerlistener=newOnClickListener()
publicvoidonClick(Viewv)
//建立一個intent物件
Intentintent=newIntent();
//指定原本的class和要啟動的class
intent.setClass(MainActivity.this,TwoActivity.class);
//呼叫另外一個新的Activity
startActivity(intent);
//關閉原本的Activity
MainActivity.this.finish();
};
2.2:TwoActivity.java
privateButtontwobtn=null;
//載入two.xml佈局檔案
setContentView(R.layout.two);
twobtn=(Button)findViewById(R.id.twobtn);
twobtn.setOnClickListener(listener);
intent.setClass(TwoActivity.this,MainActivity.class);
TwoActivity.this.finish();
三:配置檔案
AndroidMainfest.xml
1:當系統中新添加了一個Activity時,必須在AndroidMainfest.xml裡定義一個新的Activity,由於我們新建立了TwoActivity.java,所以我們需要在AndroidMainfest.xml里加上如下程式碼,如果不加的話,系統會因為找不到Activity而發生編譯性錯誤。
<activityandroid:name=".TwoActivity"
android:label="@string/app_name">
</activity>
2:當程式中出現了兩個Activity時,系統要決定主程式是哪一支,所以我們需要在AndroidMainfest.xml裡定義如下程式碼,這個引數必須要被定義,如果不加的話,則程式不會被執行。
其中<categoryandroid:name="android.intent.category.LAUNCHER"/>,就代表了程式啟動時,會執行MainActivity而非TwoActivity。
<activityandroid:name=".MainActivity"
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
在“手機頁面之間的跳轉”一文中我介紹瞭如何運用setContentView()方法切換佈局檔案Layout的方式進行手機頁面間的跳轉,這種適合更改背景,文字顏色,文字內容,但是始終是一個Activity,如果要把主控權移交給另外一個Activity,切換佈局檔案Layout的方式就辦不到了。
如何把主控權移交給另外一個Activity呢?原理:透過Intent物件和startActivity()方法配合來實現。在主程式裡使用startActivity()方法呼叫另外一個Activity,但是最主要的不是這個startActivity()方法,而是Intent物件,Intent在英文中是“意圖”的意思,在主Activity當中,告訴程式自己是什麼,並想要前往哪裡,這就是Intent物件要做的事情了。在主Activity(ActivityOne)裡放置一個按鈕,當單擊這個按鈕的時候,告訴主Activity(ActivityOne)前往ActivityTwo,並在ActivityTwo裡放置一個回到主Activity(ActivityOne)的一個按鈕。
實現步驟
一:佈局檔案編寫
1.1:第一個佈局檔案main.xml
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="我是ActivityOne"
/>
<Button
android:id="@+id/mainbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="呼叫ActivityTwo"
/>
</LinearLayout>
1.2:第二個佈局檔案two.xml
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="我是ActivityTwo"
/>
<Button
android:id="@+id/twobtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="呼叫ActivityOne"
/>
</LinearLayout>
二:程式碼檔案編寫
2.1:MainActivity.java
packagecom.menglin.callactivity;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassMainActivityextendsActivity
{
//宣告一個Button物件
privateButtonmainbtn=null;
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
//載入main.xml佈局檔案
setContentView(R.layout.main);
//以findViewById()方法取得Button物件
mainbtn=(Button)findViewById(R.id.mainbtn);
//給Button物件繫結單擊監聽事件
mainbtn.setOnClickListener(listener);
}
//監聽事件
privateOnClickListenerlistener=newOnClickListener()
{
@Override
publicvoidonClick(Viewv)
{
//建立一個intent物件
Intentintent=newIntent();
//指定原本的class和要啟動的class
intent.setClass(MainActivity.this,TwoActivity.class);
//呼叫另外一個新的Activity
startActivity(intent);
//關閉原本的Activity
MainActivity.this.finish();
}
};
}
2.2:TwoActivity.java
packagecom.menglin.callactivity;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassMainActivityextendsActivity
{
//宣告一個Button物件
privateButtontwobtn=null;
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
//載入two.xml佈局檔案
setContentView(R.layout.two);
//以findViewById()方法取得Button物件
twobtn=(Button)findViewById(R.id.twobtn);
//給Button物件繫結單擊監聽事件
twobtn.setOnClickListener(listener);
}
//監聽事件
privateOnClickListenerlistener=newOnClickListener()
{
@Override
publicvoidonClick(Viewv)
{
//建立一個intent物件
Intentintent=newIntent();
//指定原本的class和要啟動的class
intent.setClass(TwoActivity.this,MainActivity.class);
//呼叫另外一個新的Activity
startActivity(intent);
//關閉原本的Activity
TwoActivity.this.finish();
}
};
}
三:配置檔案
AndroidMainfest.xml
1:當系統中新添加了一個Activity時,必須在AndroidMainfest.xml裡定義一個新的Activity,由於我們新建立了TwoActivity.java,所以我們需要在AndroidMainfest.xml里加上如下程式碼,如果不加的話,系統會因為找不到Activity而發生編譯性錯誤。
<activityandroid:name=".TwoActivity"
android:label="@string/app_name">
</activity>
2:當程式中出現了兩個Activity時,系統要決定主程式是哪一支,所以我們需要在AndroidMainfest.xml裡定義如下程式碼,這個引數必須要被定義,如果不加的話,則程式不會被執行。
其中<categoryandroid:name="android.intent.category.LAUNCHER"/>,就代表了程式啟動時,會執行MainActivity而非TwoActivity。
<activityandroid:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>