1. 程式人生 > >安卓學習第28天:使用Intent在活動之間傳遞資料以及Activity的生命週期例項

安卓學習第28天:使用Intent在活動之間傳遞資料以及Activity的生命週期例項

活動之間傳遞的資料是同過Intent傳遞的,通過呼叫Intent例項的方法putExtra(),可以傳遞一個鍵值對,puExtra()方法接收兩個引數,第一個引數是鍵,用於後面從 Intent

中取值,第二個引數才是真正要傳遞的資料。然後在另一個活動中通過getExtra()的方法活取傳遞在其中的資料。

例如在第一個activity中給第一個button繫結一個監聽器,當點選按鈕就會啟動第二個activity,同時傳遞資料

button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String data = "Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data", data);
startActivity(intent);
}
});

然後在第二個activity中編輯
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.second_layout);
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.d("SecondActivity", data);
}
}

這樣就得到了傳遞的資料data

以下來自百度的圖片:



這就是activity的週期圖。

我們可以通過一段程式碼來驗證加深對生命週期的理解

package com.android.cris.myapp2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;


public class MainActivity extends Activity {

    private static final String TAG ="MainActivity" ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG,"OnCreate");
        setContentView(R.layout.activity_main);

        Button button2=(Button)findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,DialogActivity.class);
                startActivity(intent);
            }
        });

    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG,"Restart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG,"OnResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG,"OnPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG,"OnStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG,"OnDestroy");
    }
}

主活動就是這了,然後編輯下一個活動,隨便寫一個都行,只是為了驗證週期

然後觀察logcat的輸出就ok