第二章
活動建立
活動註冊
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.xuesi.demo1">
<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>
</manifest>
線性佈局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
加載佈局
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);//加載佈局
}
}
Toast函數
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Button button1 = (Button)findViewById(R.id.nextAct); //新建一個button對象
button1.setOnClickListener(new View.OnClickListener(){ //註冊監聽器
@Override
public void onClick(View v){
Toast.makeText(FirstActivity.this,"已點擊下個活動按鈕",
Toast.LENGTH_SHORT).show();
}
});
}
右上角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="添加新條目"/>
<item
android:id="@+id/remove_item"
android:title="移除"/>
</menu>
其次在要顯示的activity中重寫onCreateOptionsMenu()函數
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
//參數一指定從哪個資源文件創建菜單 參數二指定將菜單項添加到哪個menu對象中
return true;//true 顯示菜單 false 不顯示菜單
}
讓菜單響應事件,在activity中重寫onOptionsItemSelected()函數
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(FirstActivity.this,"按下了添加",
Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(FirstActivity.this,"按下了移除",
Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
使用finish()函數銷燬活動
button1.setOnClickListener(new View.OnClickListener(){ //註冊監聽器
@Override
public void onClick(View v){
finish();
}
});
使用Intent在活動之間切換以及傳遞數據
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Button button1 = (Button)findViewById(R.id.nextAct);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(FirstActivity.this,"已點擊下個活動按鈕",
Toast.LENGTH_SHORT).show();
//新建一個intent,參數一爲context(即上下文),參數二爲要轉向的活動
//並調用startActivity()函數執行
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
活動的數據傳遞
這裏寫代碼片
活動的聲明週期
活動狀態
- 運行狀態
位於返回棧的棧頂的活動,就處於運行狀態 - 暫停狀態
不處於棧頂但是可見的活動,比如被對話框擋住的活動 - 停止狀態
不處於棧頂,且完全不可見的活動 - 銷燬狀態
從返回棧中被移除的活動
活動的生存週期
Activity類中定義了7種覆蓋聲明週期每個環節的回調方法:
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestory()
- onRestart()
可將以上回調方法劃分爲3種生存週期:
- 完整生存期
onCreate()和onDestory() - 可見生存期
onStart()和onStop() - 前臺生存期
onResume()和onPause()
活動的啓動模式
- standard
在standard模式下,每次啓動一個活動都會創建該活動的新實例,即便A活動已經在棧頂,但是若再次啓動活動A還是會新建一個活動實例 - singleTop
在singleTop模式下,如果待啓動的活動位於棧頂的話,就不會再創建重複的活動實例,但如果由A活動進入B活動,再想進入A活動,還會建立新的A活動實例 - singleTask
在singleTask模式下,啓動一個新的活動時,會自動在返回棧中查找是否有實例,若有直接跳轉,若沒有則新建 - singleInstance