安卓學習第28天:使用Intent在活動之間傳遞資料以及Activity的生命週期例項
阿新 • • 發佈:2019-01-23
活動之間傳遞的資料是同過Intent傳遞的,通過呼叫Intent例項的方法putExtra(),可以傳遞一個鍵值對,puExtra()方法接收兩個引數,第一個引數是鍵,用於後面從 Intent
然後在第二個activity中編輯
這樣就得到了傳遞的資料data
主活動就是這了,然後編輯下一個活動,隨便寫一個都行,只是為了驗證週期
中取值,第二個引數才是真正要傳遞的資料。然後在另一個活動中通過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