今天要介紹Intent和Bundle,他們倆個算是兄弟一開始靠著Intent切換各個Activity頁面,之後再靠著Bundle傳送資料,所以呢接下來就來看應用吧!!
//先new出Intent實例。
Intent intent=new Intent();
//前面的Activity是你所在的頁面,第二個Activity你要換到的頁面。
intent.setClass(XXXXXActivity.this, XXXXXActivity.class);
//最後要打上才能動作(我很容易忘記)。
startActivity(intent);
Bundle能傳非常多的型態,我這邊就不贅述了。
//一樣先new出Bndle實例。
Bundle bundle=new Bundle();
//你所要傳得值和他的key,前面的xxx是你要傳的型態。
bundle.putxxx("Key",/*你所要傳得值*/);
//最後就是放入bundle。
intent.putExtras(bundle);
這邊我做了個簡易登入跳頁。
public class LoginActivity extends AppCompatActivity {
//--------設定變數--------
private EditText password;
private EditText account;
private Button bt;
private Context context;
private Bundle bundle;
private Intent intent;
//-----------------------
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//-------------------------綁定元件---------------------------
password = (EditText) findViewById(R.id.editTextTextPassword);
account = (EditText) findViewById(R.id.editTextTextPersonName);
bt = (Button) findViewById(R.id.button);
//------------------------------------------------------------
//設定context
context=this;
init();
}
public void init(){
//按鈕監聽
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//當按下確定判斷帳密是否正確
if(String.valueOf(password.getText()).equals("123")&&
String.valueOf(account.getText()).equals("123")) {
bundle=new Bundle();
intent=new Intent();
//放入你所要傳的值和他的key。
bundle.putString("password",String.valueOf(password.getText()));
bundle.putString("account",String.valueOf(account.getText()));
//換頁
intent.setClass(LoginActivity.this, CertificationActivity.class);
//加上這兩橫才會執行
intent.putExtras(bundle);
startActivity(intent);
}
else
Toast.makeText(context,"登入失敗",Toast.LENGTH_SHORT).show();
}
});
}
}
這邊我就簡單的拿取帳密並顯示。
public class CertificationActivity extends AppCompatActivity {
//----------設定變數----------
private TextView showPassword;
private TextView showAccount;
private String password;
private String account;
//---------------------------
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_certification);
//-------------------------綁定元件------------------
showPassword=(TextView) findViewById(R.id.textView3);
showAccount=(TextView) findViewById(R.id.textView4);
//--------------------------------------------------
init();
}
public void init(){
//拿取上一頁的bundle
Bundle bundle=getIntent().getExtras();
//拿取傳送過來的資料
password=bundle.getString("password");
account=bundle.getString("account");
//顯示
showAccount.setText(account);
showPassword.setText(password);
}
}
換頁