這時也不可能把程式碼全部寫在同一個Activity裡
所以都會把它寫成許許多多個Activity使用 Intent 方法來達成所需的功能。
方法 一
A Activity 開啟 B Activity方式
先做出 A Activity 程式碼如下:
a_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is Activity A" /> <Button android:id="@+id/a_layout_bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go" /> </LinearLayout>
A_Activity.java
package com.example.testintent; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class A_Activity extends Activity { private Button bt; private TextView tv; private OnClickListener click = new OnClickListener() { @Override public void onClick(View v) { //定義一個 物件 Intent Intent i = new Intent(); //setClass( 目前的class , 要開啟的class ); i.setClass(A_Activity.this,B_Activity.class); //執行 startActivity(i); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a_layout); bt = (Button)findViewById(R.id.a_layout_bt); bt.setOnClickListener(click); tv = (TextView)findViewById(R.id.a_layout_tv); } }
開始建立第二個 B Activity
在 專案底下 src -> package -> 右鍵 ->new -> class
new 一個 Class 時需注意 因為是要做出另一個Activity
在Superclass: 填入 Activity (不能打錯字)
執行 Finish
完成後會發現 會有錯誤訊息
只要import就ok了(ctrl + shift + o)
又會發現並沒有 protected void onCreate(Bundle savedInstanceState)
只要在class裡面 右鍵->source->Override/Implement Methods...
找到onCreate(savedInstanceState)按ok即可
以下的動作為最為重要
打開AndroidManifest.xml 選到 Application -> Add
選擇 Activity
在Name 這行 點選 Browse...
選擇新增的 B Class開始佈局 B Activity
res底下的layout按右鍵 ->new ->Other...
b_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is Activity B" /> </LinearLayout>B_Activity.java
package com.example.testintent; import android.app.Activity; import android.os.Bundle; public class B_Activity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.b_layout); } }
經過編譯後 就能執行 A 開啟 B的功能了
附上SourceCode
整個的重點就只是在於
Intent i = new Intent();
i.setClass(A_Activity.this,B_Activity.class);
startActivity(i);
這三行
沒有留言:
張貼留言