項目結構如圖javascript
關鍵代碼以下java
strings.xml文件代碼以下:android
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 4 <string name="app_name">ActivityDemo</string> 5 <string name="action_settings">Settings</string> 6 <string name="hello_world">Hello world!</string> 7 <string name="nextView">NextView</string> 8 <string name="nextViewOnclick">nextViewOnclick</string> 9 <string name="title_activity_first">FirstActivity</string> 10 <string name="title_activity_second">SecondActivity</string> 11 <string name="btnClose">Close</string> 12 <string name="onCloseClick">onCloseClick</string> 13 14 </resources>
說明:編程
string.xml是字符資源文件,用於存放項目中所使用的字符串內容。例如:文本框、按鈕等文字內容。windows
nextViewOnclick、onCloseClick 是按鈕的點擊事件名稱,在對應下面的activity_frist.xml 、activity_second.xml文件中會看見這兩個事件註冊。app
activity_first.xml文件代碼以下:ide
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context=".FirstActivity" > 10 11 <TextView 12 android:id="@+id/textView1" 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:text="@string/hello_world" /> 16 17 <EditText 18 android:id="@+id/editText1" 19 android:layout_width="wrap_content" 20 android:layout_height="wrap_content" 21 android:layout_alignLeft="@+id/textView1" 22 android:layout_below="@+id/textView1" 23 android:layout_marginLeft="18dp" 24 android:layout_marginTop="18dp" 25 android:ems="10" 26 android:inputType="text" > 27 28 <requestFocus /> 29 </EditText> 30 31 <Button 32 android:id="@+id/button1" 33 android:layout_width="wrap_content" 34 android:layout_height="wrap_content" 35 android:layout_alignLeft="@+id/editText1" 36 android:layout_below="@+id/editText1" 37 android:layout_marginTop="63dp" 38 android:onClick="@string/nextViewOnclick" 39 android:text="@string/nextView" /> 40 41 </RelativeLayout>
說明:this
RelativeLayout節點中的屬性定義了界面的高度、寬度、間隔邊距、以及關聯的java文件中的java類(tools:context=".FirstActivity")。類名前面帶點,說明是在同一個java包中。若是不在同包中,則須要包名全稱。編碼
從上面的代碼中能夠看出,first頁面定義了一個文本框、一個輸入文本框、一個按鈕。spa
這裏須要注意一下按鈕的onClick事件是讀取string文件中的nextViewOnclick字符串來進行定義的。固然也能夠在這裏直接定義,不須要到string.xml文件中來讀取。暫時不清楚爲何能夠這麼定義。猜想這種作法能夠很是靈活的提供修改。未來能夠不用修改java代碼,只須要修改這個xml文件就能夠達到修改事件的目的。而且提供兩種方式來進行事件修改。若是說定義到了string.xml裏面的話,還能夠根據不一樣的語言區域來進行事件不一樣的定義。
FristActivity.java文件代碼以下:
1 package hqq.steven.activitydemo; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.content.Intent; 6 import android.util.Log; 7 import android.view.Menu; 8 import android.view.View; 9 import android.widget.EditText; 10 11 public class FirstActivity extends Activity { 12 13 //窗體建立事件。相似於.NET windows編程中的Form_Load事件。 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_first); 18 } 19 20 @Override 21 public boolean onCreateOptionsMenu(Menu menu) { 22 // Inflate the menu; this adds items to the action bar if it is present. 23 getMenuInflater().inflate(R.menu.first, menu); 24 return true; 25 } 26 27 /** 28 * 點擊下一頁按鈕事件處理 29 * @param view 30 */ 31 public void nextViewOnclick(View view) { 32 //建立意圖,用於給下個窗體傳值 33 Intent intent = new Intent(this, SecondActivity.class); 34 //獲取當前頁面中文本框的值。這種findViewById的作法有點感受像javascript中的getElementById的感受。 35 //在.NET中能夠直接經過空間名稱來進行直接操做,這裏必需要經過這種方式來進行獲取該控件。 36 EditText et = (EditText) this.findViewById(R.id.editText1); 37 String msg = et.getText().toString().trim(); 38 //將文本框中的內容,壓入到意圖中去。 39 intent.putExtra("message", msg); 40 41 //啓動新的活動,設置意圖,以及請求編碼,該請求編碼用於返回時進行識別。 42 this.startActivityForResult(intent, 2); 43 } 44 45 /** 46 * 處理回傳值 47 * 第二窗體返回值,在此方法中進行處理。 48 */ 49 @Override 50 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 51 // TODO Auto-generated method stub 52 // super.onActivityResult(requestCode, resultCode, data); 53 //比對以前的請求編碼,以及覈對活動返回的編碼是不是Activity.RESULT_OK 54 if (Activity.RESULT_OK == resultCode && requestCode == 2) { 55 String result = data.getStringExtra("result"); 56 Log.i("HQQ:>", "Frist-->" + result); 57 EditText et = (EditText) this.findViewById(R.id.editText1); 58 //在當前窗體中顯示回傳的內容。 59 et.setText(result); 60 } 61 } 62 }
activity_second.xml文件中的代碼以下:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context=".SecondActivity" > 10 11 <TextView 12 android:id="@+id/textView1" 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:text="@string/hello_world" /> 16 17 <Button 18 android:id="@+id/button1" 19 android:layout_width="wrap_content" 20 android:layout_height="wrap_content" 21 android:layout_alignLeft="@+id/textView1" 22 android:layout_below="@+id/textView1" 23 android:layout_marginTop="97dp" 24 android:onClick="@string/onCloseClick" 25 android:text="@string/btnClose" /> 26 27 <EditText 28 android:id="@+id/editText1" 29 android:layout_width="wrap_content" 30 android:layout_height="wrap_content" 31 android:layout_alignLeft="@+id/button1" 32 android:layout_below="@+id/textView1" 33 android:layout_marginTop="42dp" 34 android:ems="10" 35 android:inputType="text" > 36 37 <requestFocus /> 38 </EditText> 39 40 </RelativeLayout>
說明:注意按鈕的onclick事件註冊採用的是string.xml文件中字符內容。該方式與activity_first.xml中的狀況同樣。
SecondActivity.java文件中的代碼以下:
1 package hqq.steven.activitydemo; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.content.Intent; 6 import android.util.Log; 7 import android.view.Menu; 8 import android.view.View; 9 import android.widget.EditText; 10 import android.widget.TextView; 11 12 public class SecondActivity extends Activity { 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_second); 18 19 //獲取意圖,將前窗體傳過來的值進行顯示。 20 Intent intent = this.getIntent(); 21 String msg = intent.getStringExtra("message"); 22 TextView tv = (TextView) this.findViewById(R.id.textView1); 23 tv.setText(msg); 24 } 25 26 @Override 27 public boolean onCreateOptionsMenu(Menu menu) { 28 // Inflate the menu; this adds items to the action bar if it is present. 29 getMenuInflater().inflate(R.menu.second, menu); 30 return true; 31 } 32 33 /** 34 * 點擊關閉按鈕時處理方法 35 * 將本窗體填入的數據經過意圖進行返回。 36 * @param view 37 */ 38 public void onCloseClick(View view) { 39 //獲取當前窗體中文本框輸入的內容 40 EditText et = (EditText) this.findViewById(R.id.editText1); 41 String msg = et.getText().toString().trim(); 42 //將獲取的內容壓入意圖中 43 Intent intent = this.getIntent(); 44 intent.putExtra("result", msg); 45 Log.i("HQQ:>", "Seconde-->" + msg); 46 47 //設置返回結果編號,以及返回的結果 48 //須要注意的是,該返回的結果編號Activity.RESULT_OK必須與接收窗體的resultCode一致, 49 //由於該值做爲接收窗體判別的標識號。 50 this.setResult(Activity.RESULT_OK, intent); 51 52 //窗體結束 53 this.finish(); 54 } 55 56 }