編輯:關於Android編程
Respond to the Send Button-響應Send(發送)按鈕
響應按鈕的on-click(點擊)事件,打開main.xml布局文件然後在Button(按鈕)元素中添加android:onclick屬性:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" /> www.2cto.com
android:onclick屬性的值:sendMessage就是當用戶點擊你屏幕按鈕時觸發方法的名字。
添加相應的方法在MyFirstActivity類中:
/** 當用戶點擊Send按鈕時調用 */
public void sendMessage(View view) {
// 做一些相應按鈕的操作
}
注意:在Eclipse中,按Ctrl + Shift + O 可以導入缺失的類(在Mac中使用Cmd + Shift + O )
請注意,為了讓系統能夠將這個方法(你剛在MyFirstActivity中添加的sendMessage方法)與在android:onClick屬性中提供的方法名字匹配,它們的名字必須一致,特別是,這個方法必須滿足以下條件:
公共的
沒有返回值
有一個唯一的視圖(View)參數(這個視圖就是將被點擊的視圖)
接下來,你可以在這個方法中編寫讀取文本內容的代碼,並將該內容傳到另一個Activity
Build an Intent-構建一個Intent(意圖)
Intent(意圖)是在不同組件中提供運行時連接的對象(比如兩個Activity)。Intent(意圖)代表一個應用"想去做什麼事",你可以用它做各種各樣的任務,不過大部分的時候他們被用來啟動另一個Activity。在sendMessage()方法中創建一個Intent(意圖)並啟動名為DisplayMessageActivity的Activity:
Intent intent = new Intent(this, DisplayMessageActivity.class);
在這個Intent構造函數中有兩個參數: 第一個參數是Context(上下文)(之所有可以用this是因為當前Activity(MyFirstActivity)是Context的子類) 系統需要傳遞Intent的應用組件的class對象(在這個案例中,這個activity應該被啟動)
注意:如果你正在使用的是類似Eclipse的IDE,這裡對DisplayMessageActivity的引用會報錯,因為這個類還不存在;注意這個錯誤,你很快就要去創建這個類了。
一個Intent(意圖)不僅允許你啟動另一個Activity,同時也可以傳遞一個數據包到另一個Activity,ok,用findViewById()方法得到EditText元素,然後將它的信息添加到Intent(意圖):
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);
Sending an intent to other apps-發送intent(意圖)到其他app(應用)
在這課中創建的Intent(意圖)包含了一個非常明確的意圖,因為它指定了一個Intent需要的精確app(應用)組件; 然而,在Intent沒有指定明確的組件時,Intent(意圖)是隱式的,但它允許安裝在設備上的任何應用來回應, 只要這個應用滿足在各個Intent(意圖)參數中指定的action(行動)的元數據規范,想了解更多信息, 可以去看Interacting with Other Apps課程
Intent(意圖)可以傳遞各種各樣的以鍵值對形式出現的集合,可以稱它為extras,putExtra()方法用字符竄作為它的key,第二個參數作為它的值為了在下一個Activity中獲取extra(附加的)數據,你應該定義一個公共常量作為key(鍵),ok,在MyFirstActivity類的頂部定義一個名為EXTRA_MESSAGE的常量:
public class MyFirstActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.myapp.MESSAGE";
...
}
為使extras鍵唯一,使用你應用的包名作為extras鍵的前綴是一個很好的做法,因為你的應用可能需要跟其他應用交互。
Start the Second Activity-啟動第二個Activity
啟動一個Activity,你只需要調用startActivity()方法然後傳入你的Intent(意圖)系統接收到你的請求後會實例化在Intent中指定的Activity,包含這個方法擁有的,被Send(發送)按鈕調用的完整sendMessage()方法現在就像這樣:
/** 當用戶點擊Send按鈕時調用 */
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);
}
現在你需要去創建一個DisplayMessageActivity支持程序能夠執行起來
Create the Second Activity-創建第二個Activity
在你的項目中,在src/<package-name>/路徑下新建一個名為DisplayMessageActivity.java的類。
注:在Eclipse中,在src/路徑下點鼠標右鍵選中New > Class,輸入DisplayMessageActivity,並且指定繼承android.app.Activity 。
在這個類中,添加onCreate()回調方法:
public class DisplayMessageActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
所有Activity的子類都必須實現onCreate()方法,當系統創建Activity實例時就會調用該方法,這個方法是你必須定義activity布局以及初始化必要activity組件的地方。
Add it to the manifest-將Activity加入manifest(清單)文件
你必須在manifest(清單)文件,AndroidManifest.xml中使用<activity>元素聲明你所有的Activity;因為DisplayMessageActivity是由一個明確的Intent(意圖)調用的,所以它不需要任何intent filters(意圖過濾器)(intent filters,你可以在manifest文件中聲明MyFirstActivity的地方看到)如此DisplayMessageActivity就可以在<application>元素中用一句很簡單的代碼聲明;
<application ... >
<activity android:name="com.example.myapp.DisplayMessageActivity" />
...
</application>
這個app(應用)現在就可以運行了,因為第一個Activity中的Intent現在可以解析DisplayMessageActivity類了,如果你現在運行app,點擊Send(發送)按鈕啟動,第二個Activity,它不會顯示任何東西;
Receive the Intent-獲取Intent(意圖)
每一個被Intent調用的Activity,不管用戶將它導航到哪,你都可以在啟動的Activity中通過getIntent()方法得到Intent以及Intent包含的數據。在DisplayMessageActivity類的onCreate()方法中,得到intent以及MyFirstActivity提供的附加信息:
Intent intent = getIntent();
String message = intent.getStringExtra(MyFirstActivity.EXTRA_MESSAGE);
Display the Message-顯示信息
在屏幕上顯示信息,創建一個TextView部件,並且使用setText()設置它的值,然後通過setContentView()方法將TextView作為root(根)視圖添加到Activity的布局。
DisplayMessageActivity完整的onCreate()方法現在看起來如下:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 從intent中獲取信息
Intent intent = getIntent();
String message = intent.getStringExtra(MyFirstActivity.EXTRA_MESSAGE);
// 創建TextView對象
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
setContentView(textView);
}
現在你可以運行app,在文本中輸入信息,點擊Send(發送)按鈕,ok,現在就可以在第二Activity上看到信息了。
前幾天需要實現一個以太網功能就看了以太網的源碼部分,看見了源碼部分在消息處理時,發現有一些不同的地方: 平時我在處理消息時: 1、首先創建Handler對
今天這篇文章教給大家解決這幾個問題:1、如何通過AndroidStudio的git上傳項目到github2、如何通過AndroidStudio的git將存在的項目增加的類
復制代碼 代碼如下:filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + /A
最近公司在項目上要使用到表情與鍵盤的切換輸入,自己實現了一個,還是存在些缺陷,比如說鍵盤與表情切