活動(activity)是最容易吸引用戶的地方,它是一種可以包含用戶界面的組件,主要用于和用戶進行交互。
在AndroidManifest文件中注冊
所有的活動都需要在AndroidManifest.xml中注冊。不過Android Studio會自動進行注冊
<application android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
在<application>標簽中:
android:icon設置APP的圖標,安裝在手機上的APP圖標就是這個。
android:label設置APP的標題,安裝在手機上的APP標題就是這個。
通過<activity>標簽來進行活動注冊。
Toast提示
Toast.makeText(FirstActivity.this,"這是按鈕",Toast.LENGTH_SHORT).show();
Toast通過靜態方法makeText()創建,讓后調用show()將其顯示出來。
makeText()方法需要3個參數:
- Context
- Toast所需文本
- Toast所需時長 有兩個內置常量Toast.LENGTH_SHORT和Toast.LENGTH_LONG
Menu菜單
- res中新建一個menu文件夾,在menu中建立新建布局文件。
<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"/>
<item android:id="@+id/finish_item"
android:title="Finish"/>
</menu>
<item>標簽就是用來創建具體的某一項菜單項。
- 在Activity中重寫onCreateOptionsMenu()方法【快捷鍵Ctrl+o】
@Overridepublic boolean onCreateOptionsMenu(Menu menu)
{
//通過getMenulnflater()方法能夠得到MenuInflater對象,再調用它的inflate()方法就可以給當前活動創建菜單了。
//inflate方法兩個參數,第一個用于指定我們通過哪一個資源文件,第二個用于指定我們的菜單項添加到哪一個menu對象中。
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
- 繼續重寫onOptionsItemSelected()方法,為菜單添加響應事件
@Overridepublic boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(FirstActivity.this,"這是add按鈕",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(FirstActivity.this,"這是remove按鈕",Toast.LENGTH_SHORT).show();
break;
case R.id.finish_item:
Toast.makeText(FirstActivity.this,"這是finish按鈕",Toast.LENGTH_SHORT).show();
finish();//關閉當前活動
break;
}
return true;
}
Intent
Intent是Android程序中各個組件之間進行交互的一種重要方式,它不僅可以指明當前組件想要執行的動作,還可以在不同組件之間傳遞數據。
1. 顯式Intent
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
2. 隱式Intent
在AndroidManifest.xml中的<activity>標簽下配置<intent-filter>的內容,其中可以指定<action>,<category>,<data>三個標簽:
<activity android:name=".ThirdActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
當<action><category>中的內容同時能夠匹配上Intent中指定的action和actegory時,這個活動才能響應該Intent。<data>標簽用于更精確地指定當前活動能夠響應什么類型的數據。
<data>標簽配置
- android:scheme 用于指定數據的協議部分
- android:host 用于指定數據的主機名部分
- android:port 用與指定數據的端口部分
- android:path 用于指定主機名和端口之后的部分
- android:mimeType 用于指定可以處理的數據類型,允許使用通配符的方式進行指定。
3. Intent數據傳遞
- 向下一個活動傳遞數據
通過putExtra()方法傳遞一個字符串
Intent intent = new Intent();
intent.putExtra("data","Hello SecondActivity");
startActivity(intent);
通過getIntent()方法獲取到啟動activity的Intent,讓后通過getStringExtra取得字符串。
Intent intent = getIntent();
String data = intent.getStringExtra("data");
Log.d("SecondActivity",data);
- 返回數據給上一個活動
可通過startActivityForResult()方法實現。該方法期望活動結束后返回一個j結果給上一個活動。其接受兩個參數:Intent和請求碼。請求碼唯一。
//FirstActivity中
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
//SecondActivity
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentClick = new Intent();
intentClick.putExtra("data_return","Hello FirstActivity");
//setResult()方法中,第一個參數用于向上一個活動返回處理結果,第二個參數則是帶有數據的Intent。
setResult(RESULT_OK,intentClick);
finish();
}
}
);
//FirstActivity中重寫onActivityResult()方法
//該方法帶有三個參數:
//requestCode 請求碼、resultCode 返回數據時傳入的結果集、data 帶參的Intent
@Overrideprotected void onActivityResult(int requestCode, int
resultCode, Intent data) {
switch (requestCode){
case 1:
if (resultCode == RESULT_OK){
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity",returnedData);
}
break;
default:
}
}
//還可以在SecondActivity中重寫onBackPressed()方法實現點擊Back鍵返回數據
@Overridepublic void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent);
finish();
}
當然上面的內容只是一部分而已,想更深入的了解還得在繼續研究。同樣我還找到一些其他的資料,比如:
intent Filter
其他人的閱讀筆記
Android Developers
這里僅僅是我記錄的部分筆記,以備回顧記憶
如有侵權請聯系我,我將進行修改和刪除