安卓自學筆記

第二章

活動建立

活動註冊

<?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);
            }
        });
    }

活動的數據傳遞

這裏寫代碼片

活動的聲明週期

活動狀態

  1. 運行狀態
    位於返回棧的棧頂的活動,就處於運行狀態
  2. 暫停狀態
    不處於棧頂但是可見的活動,比如被對話框擋住的活動
  3. 停止狀態
    不處於棧頂,且完全不可見的活動
  4. 銷燬狀態
    從返回棧中被移除的活動

活動的生存週期

Activity類中定義了7種覆蓋聲明週期每個環節的回調方法:

  1. onCreate()
  2. onStart()
  3. onResume()
  4. onPause()
  5. onStop()
  6. onDestory()
  7. onRestart()

可將以上回調方法劃分爲3種生存週期:

  • 完整生存期
    onCreate()和onDestory()
  • 可見生存期
    onStart()和onStop()
  • 前臺生存期
    onResume()和onPause()

活動的啓動模式

  • standard
    在standard模式下,每次啓動一個活動都會創建該活動的新實例,即便A活動已經在棧頂,但是若再次啓動活動A還是會新建一個活動實例
  • singleTop
    在singleTop模式下,如果待啓動的活動位於棧頂的話,就不會再創建重複的活動實例,但如果由A活動進入B活動,再想進入A活動,還會建立新的A活動實例
  • singleTask
    在singleTask模式下,啓動一個新的活動時,會自動在返回棧中查找是否有實例,若有直接跳轉,若沒有則新建
  • singleInstance
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章