Android 使用Intent在活動之間傳遞資料
阿新 • • 發佈:2019-02-16
直接上程式碼
第一個Activty:
public class MainActivity extends Activity { // 請求碼,必須是唯一值 private static final int TO_SECOND_ACTIVITY = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button gotoSecond = (Button) findViewById(R.id.button_1); gotoSecond.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); String data = "進入SecondActivity"; intent.putExtra("extra_data", data); startActivityForResult(intent, TO_SECOND_ACTIVITY); } }); } // 上面使用startActivityForResult()方法來啟動SecondActivity // 則SecondActivity銷燬後會回撥onActivityResult()方法 // 在這裡得到返回的資料 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == TO_SECOND_ACTIVITY) { switch (resultCode) { case RESULT_OK: String returnData = data.getStringExtra("data_return"); Toast.makeText(this, returnData, Toast.LENGTH_LONG).show(); break; default: } } } }
第二個Activity:
public class SecondActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.second_activity); // 獲取傳入的資料並顯示 Intent intent = getIntent(); String data = intent.getStringExtra("extra_data"); Toast.makeText(this, data, Toast.LENGTH_LONG).show(); // 點選按鈕返回上一個Activity Button finishThis = (Button) findViewById(R.id.button_finish_2); finishThis.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { returnDataAndClose(); } }); } // 返回資料並關閉當前活動 private void returnDataAndClose(){ Intent intent = new Intent(); intent.putExtra("data_return", "學習安卓"); setResult(RESULT_OK, intent); finish(); } // 按下手機上的返回鍵時呼叫此活動 @Override public void onBackPressed() { returnDataAndClose(); } }