Activity的使用
Activity是Android程序的四大組件之一,也是呈現給用戶的第一印象,因此對于這個組件的編程是非常重要的。
創建Activity
創建Activity非常簡單,在AS中,切換到Project目錄下,尋找包文件夾,在其上右擊,新建一個空的activity,AS會默認幫我們在Manifest中進行注冊,并且程序會自動重寫Oncreate方法
菜單選項的使用
要想在Activity中添加菜單欄,實現如下的效果:
首先需要在res目錄下新建menu文件夾,在menu文件夾中新建一個menu類型資源文件,文件代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="remove"/>
</menu>
此時已經可以使用AS的預覽功能查看到菜單欄了,但是仍然需要在Activity中激活一下,在activity.java中重寫
public boolean onCreateOptionsMenu(Menu menu){};
函數,這里可以使用AS快捷鍵Ctrl+O,搜索此函數
重寫完以上函數后,兩個菜單項并不能實現其功能,需要再重寫一下public boolean onOptionsItemSelected(MenuItem item) {}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
Toast的使用
Toast是Android中用來顯示顯示信息的一種機制,和Dialog不一樣的是,Toast是沒有焦點的,而且Toast顯示的時間有限,過一定的時間就會自動消失。
toast的使用非常簡單,只需要使用靜態方法makeText()即可實現
Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
// toast.setGravity(Gravity.CENTER, 0, 0); 實例方法,設置出現位置
/*
toast.setGravity(Gravity.CENTER, 0, 0);
LinearLayout toastView = (LinearLayout) toast.getView();
ImageView imageCodeProject = new ImageView(getApplicationContext());
imageCodeProject.setImageResource(R.drawable.icon);
toastView.addView(imageCodeProject, 0);
*/
// 設置帶圖片的toast
效果圖:

Activity切換
最簡單的切換方式,顯式Intent,即指明打開新的Activity的名字:
Intent intent = new Intent(MainActivity.this,Main2Activity.class);// 去往的參數填一個class文件
startActivity(intent);
復雜一點的是隱式切換:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
這里是打開系統默認的Activity,比如這里打開的就是瀏覽器,當然,如果別的Activity也可以在manifest中進行注冊,隱式Intent打開的是符合注冊條件的activity,若存在多個符合條件會提供給用戶進行選擇
<activity android:name=".Main3Activity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
Intent傳遞數據
使用Intent可以在Activity中傳遞數據,一種簡單的方法是:
String data = "Hello,My activity";
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("extra_data",data);
startActivityt();
// Main2Activity中接受數據的部分
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.d(TAG, data);
還有一種方法是調用Main2Activity的MainActivity從被調用的獲得數據:
// MainActivity中的代碼
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(intent,1);
//另外要重寫onActivityResult來獲取返回數據,這里的requestCode就是我們剛才設置的1,這樣這個函數就可以處理多個request了
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode==RESULT_OK){
String returndata = data.getStringExtra("data_back");
Log.d(TAG,returndata);
}break;
default:
}
}
// Main2Activity中的代碼
Intent intent = new Intent();
intent.putExtra("data_back","Hello,my mainactivity");
setResult(RESULT_OK,intent);
// 也可以重寫onBackPress的方法,加入上面代碼