2012年12月22日 星期六

【Android】開啟另一個Activity


【Step 1】增加按鈕的功能
首先在button中增加android:onClick="sendMessage",按下按鈕後執行sendMessage的動作

【Step 2】定義按鈕功能
我們想增加一些程式碼至MainActivity中讓按鈕的功能發揮。
為了按下按鈕後有事件產生,我們先打開layout中的activity_main.xml檔,
在<Button/>元素中增加一個android:onClick的屬性。



android:onClick屬性增加"sendMessage"的值,其代表使用者按下按鈕後所驅動的方法名稱。
打開MainActivity.java檔增加public void sendMessage(View view){}定義按鈕的動作。
此時有一個Error會要求你匯入View的類別,只要增加import android.view.View便可。

【Step 3】建立Intent
Intent可以做為兩個activity之間的溝通,在sendMessage()中增加Intent的定義,定義DisplayMessageActivity為啟動名稱:Intent intent = new Intent(this, DisplayMessageActivity.class);
Intent結構中的this代表當前activity是Context的子類,class代表Intent的傳遞(這裡的Activity必須被啟動)

  • DisplayMessageActivity會有error,顯示沒有這個類別,後面馬上會建立此類別,先忽略。

Intent不只可以讓你執行另一個activity,還可以傳數據至另一個activity,只要增加findViewById()函式便可以得到EditText元素,然後他輸入的數據就可以透過Intent傳輸至另一個activity。


此時必須匯入android.content.Intentandroid.widget.EditText,接下來要定義EXTRA_MESSAGE
putExtra()的第一個參數為字串所主成的Key,第二個參數為Key的值。
為了另一個activity可以查詢數據,必須至MainActivity.java定義EXTRA_MESSAGE。
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";


【Step 4】啟動第二個Activity
要啟動第二個activity必須使用startActivity(),參數設定就是你要執行的Intent名稱。


【Step 5】建立第二個Activity
按左上角的New按鈕,選擇Android → Android Activity
接下來輸入第二個Activity的介面設定


設定完會出現一個DisplayMessageActivity.java檔,並開啟。
會看到一個onCreate()的函式,可以先移除onCreateOptionsMenu()函式,還有一個onOptionsItemSelected()函式完整保留就好。


【Step 6】將Activity加入manifest
打開AndroidManifest.xml找到 <activity>中修改一些程式碼,因為要讓manifest清單知道你多設置一個activity。
<activity android:name= "com.example.myfirstapp.DisplayMessageActivity" />


【Step 7】顯示第二個Activity的文字
為了可以讓第二個activity可以透過Intent讀取文字數據,並顯示於第二的activity上,必須建立一個TextView存取setText()所取得的massage數據。
透過setContentView()函式可以將文字顯示在activity上,完成後就可以執行你的app了。


最後結果會顯示一個畫面叫你輸入文字,並可以按下按鈕送出,另一個畫面就是顯示你所輸入的文字。



參考來源:Starting Another Activity

0 意見:

張貼留言