日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity

發布時間:2024/7/5 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://android.xsoftlab.net/training/basics/firstapp/starting-activity.html#CreateActivity
在完成了上一節課之后,你有了一個帶有輸入框和按鈕的單屏幕Activity。在這節課中,你將會在MyActivity中添加一些代碼,以便用戶在點擊Send的按鈕啟動一個新的Activity.

響應Send按鈕

1 . 在AS中,打開res/layout下的activity_my.xml文件。
2 . 找到Button標簽< Button >,在其中添加android:onClick 屬性:

<Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button_send"android:onClick="sendMessage" />

在這里 android:onClick中設置的值”sendMessage”,在當用戶點擊按鈕的時候,系統會調用Activity中以”sendMessage”命名的方法。

3 . 在java/com.mycompany.myfirstapp下打開MyActivity.java文件。
4 . 在MyActivity.java中添加sendMessage()方法,就像下面這樣:

/** Called when the user clicks the Send button */ public void sendMessage(View view) {// Do something in response to button }

為了確保系統可以使代碼中的方法與android:onClick相匹配,方法的標識符必須正確,通常情況下,方法必須包括:

  • public
  • 有個Void的返回值
  • 有且僅有一個View類型的參數,它代表點擊的時候回調的點擊對象。

構建一個Intent

1 . 在MyActivity.java的sendMessage()方法內,創建一個Intent來啟動一個名叫DisplayMessageActivity 的Activity:

public void sendMessage(View view) {Intent intent = new Intent(this, DisplayMessageActivity.class); }

Note: 如果你在使用像AS這種IDE工具,那么引用DisplayMessageActivity 將會引起錯誤,因為這個類還沒有被創建。

這里的構造方法有兩個參數:

  • Context 是第一個參數,這里使用了this是因為Activity是Context的子類。
  • Class 類是系統將要分發的APP組件,在這里,這個Activity將會被啟動。

AS會指示你必須導入Intent類。

2 . 在文件的頂部,導入Intent類:

import android.content.Intent;

在AS中按下Alt+Enter來導入類。

3 . 在sendMessage()方法內部,使用findViewById()來獲取EditText的引用:

public void sendMessage(View view) {Intent intent = new Intent(this, DisplayMessageActivity.class);EditText editText = (EditText) findViewById(R.id.edit_message); }

4 . 在文件的頂部導入EditText類。
5 . 關聯文本到一個名為message 的本地變量中,然后使用putExtra()函數把這個文本值放入到intent對象里:

public void sendMessage(View view) {Intent intent = new Intent(this, DisplayMessageActivity.class);EditText editText = (EditText) findViewById(R.id.edit_message);String message = editText.getText().toString();intent.putExtra(EXTRA_MESSAGE, message); }

一個Intent對象可以攜帶被稱為extras的鍵值對。putExtra()方法將鍵放在第一個參數中,將值放在第二個參數中。

6 . 在MyActivity類的頂部,像下面這樣添加一個EXTRA_MESSAGE 的定義:

public class MyActivity extends ActionBarActivity {public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";... }

7 . 在sendMessage()方法內,為了完成Intent的使命,調用startActivity()方法傳遞第1步創建的Intent對象。

完成以上代碼,那么sendMessage()看起來應該是這樣的:

/** Called when the user clicks the Send button */ public void sendMessage(View view) {Intent intent = new Intent(this, DisplayMessageActivity.class);EditText editText = (EditText) findViewById(R.id.edit_message);String message = editText.getText().toString();intent.putExtra(EXTRA_MESSAGE, message);startActivity(intent); }

系統在接收到這個請求之后,會啟動Intent中指定的Activity的實例,現在你需要為了接下來的工作創建一個DisplayMessageActivity類。

創建第二個Activity

所有的Activity的子類必須實現onCreate()方法。這個方法是Activity對象接收Intent消息的地方,然后顯示消息。還有,onCreate()方法中必須使用setContentView()方法與指定的Acivity布局文件相結合。這里是Activity指定初始化操作的地方。

使用AS創建一個新的Activity

AS會在你創建一個新Activity的時候自動實現 onCreate()方法。

1 . 在AS中,在java目錄下,選擇包com.mycompany.myfirstapp,右擊,選擇New > Activity > Blank Activity。
2 . 在 Choose options窗口中,填入下面這些信息:

  • Activity Name: DisplayMessageActivity
  • Layout Name: activity_display_message
  • Title: My Message
  • Hierarchical Parent: com.mycompany.myfirstapp.MyActivity
  • Package name: com.mycompany.myfirstapp

點擊Finish

3 . 打開DisplayMessageActivity.java

現在類中已經有了onCreate()方法,稍后需要更新這個方法的實現。除了它還包含onOptionsItemSelected()的實現,它是用來處理ActionBar上的點擊實現,現在保持它在這個地方不要動。

4 . 刪掉onCreateOptionsMenu()方法,這里暫時還不需要。

Note:如果你在使用AS進行開發,那么現在就可以運行APP了,不過不會有什么效果,因為第二個APP還什么都沒實現。

不使用AS創建新的Activity

如果你使用的是其它的IDE,或者是命令行,按照下面來:
1 . 創建一個名為DisplayMessageActivity.java的新文件,然后把它放到src/目錄下。
2 . 在這個文件下填入如下代碼:

public class DisplayMessageActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_display_message);if (savedInstanceState == null) {getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();}}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}/*** A placeholder fragment containing a simple view.*/public static class PlaceholderFragment extends Fragment {public PlaceholderFragment() { }@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.fragment_display_message,container, false);return rootView;}} }

Note : 如果你使用的是類似AS的IDE,工程中不會包含setContentView()所需要的布局文件activity_display_message。這沒關系,因為你稍后不會使用到這個布局。

3 . 在strings.xml文件中,填入新的Activity的標題:

<resources>...<string name="title_activity_display_message">My Message</string> </resources>

4 .在清單文件AndroidManifest.xml中,Application標簽下添加DisplayMessageActivity類的標簽< Activity >:

<application ... >...<activity android:name="com.mycompany.myfirstapp.DisplayMessageActivity"android:label="@string/title_activity_display_message"android:parentActivityName="com.mycompany.myfirstapp.MyActivity" ><meta-data android:name="android.support.PARENT_ACTIVITY"android:value="com.mycompany.myfirstapp.MyActivity" /></activity> </application>

android:parentActivityName屬性生命了這個Activity的父層級Activity。系統使用這個值來實現默認的導航習慣,在 Android 4.1 (API level 16)及更高的版本上點擊 Up navigation會回到指定父層級Activity。你可以使用 Support Library 支持庫來對老版本兼容這一點,然后添加跟這里一樣的< meta-data >標簽。

接收Intent

無論用戶怎么導航,每一個Activity都是被Intent調起來的,你可以在被調用的Activity中通過getIntent()方法拿到Intent對象,然后從其中取出包含的值。
1 . 編輯java/com.mycompany.myfirstapp目錄下的DisplayMessageActivity.java文件。
2 . 在onCreate()方法中,移除這一行:

setContentView(R.layout.activity_display_message);

3 . 使用一個本地變量接收Intent。

Intent intent = getIntent();

4 . 在類的頂部導入Intent的類。
5 . 通過getStringExtra()方法取出被傳遞的消息。

String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

展示消息

1 在onCreate()方法內,創建一個TextView對象。

TextView textView = new TextView(this);

2 設置文本的大小和消息:

textView.setTextSize(40); textView.setText(message);

3 然后通過setContentView()添加TextView到Activity的根目錄中。

setContentView(textView);

4 在文件的頂部導入TextView類。
然后完成的DisplayMessageActivity onCreate()方法應該是這樣的:

@Override public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// Get the message from the intentIntent intent = getIntent();String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);// Create the text viewTextView textView = new TextView(this);textView.setTextSize(40);textView.setText(message);// Set the text view as the activity layoutsetContentView(textView); }

你先就可以運行APP了,當它打開之后,輸入一些文本到輸入框中,點擊Send按鈕,然后輸入的文本就會出現在第二個Activity中了。

就是這樣,你已經完成了第一個安卓應用。

下一節課會學習到如何添加ActionBar.

總結

以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。