回覆列表
  • 1 # 萌無敵影紫稻葵

    在“手機頁面之間的跳轉”一文中我介紹瞭如何運用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>

  • 中秋節和大豐收的關聯?
  • 醬鴿子怎麼做?