iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Mobile Development

Android studio 30天初學筆記系列 第 14

[Android Studio 30天挑戰] Day14 - 介紹Intent & Bundle

  • 分享至 

  • xImage
  •  

今天要介紹Intent和Bundle,他們倆個算是兄弟一開始靠著Intent切換各個Activity頁面,之後再靠著Bundle傳送資料,所以呢接下來就來看應用吧!!

語法

Intent

//先new出Intent實例。
Intent intent=new Intent();
//前面的Activity是你所在的頁面,第二個Activity你要換到的頁面。
intent.setClass(XXXXXActivity.this, XXXXXActivity.class);
//最後要打上才能動作(我很容易忘記)。
startActivity(intent);

Bundle

Bundle能傳非常多的型態,我這邊就不贅述了。

//一樣先new出Bndle實例。
Bundle bundle=new Bundle();
//你所要傳得值和他的key,前面的xxx是你要傳的型態。
bundle.putxxx("Key",/*你所要傳得值*/);
//最後就是放入bundle。
intent.putExtras(bundle);

實作

這邊我做了個簡易登入跳頁。

LogintActivity

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

CertificationActivity

這邊我就簡單的拿取帳密並顯示。

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

https://ithelp.ithome.com.tw/upload/images/20220719/20150369Uqp47Vmt7K.png換頁/images/emoticon/emoticon08.gifhttps://ithelp.ithome.com.tw/upload/images/20220719/20150369mXIZUMI1w2.png


上一篇
[Android Studio 30天挑戰] Day13 - 介紹Log
下一篇
[Android Studio 30天挑戰] Day15 - 介紹AlertDialog
系列文
Android studio 30天初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言