iT邦幫忙

0

[Android Studio] -- Day 3 Activity練習

前言

今天將針對activity的跳轉來複習複習


正文

這次採用bundle來傳值,並區分startActivity()和startActivityForResult()

startActivity()

從Activity1跳轉到Activity2

  • Activity1
    按下按鈕後進行跳轉
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                temp = editText.getText().toString();
                bundle.putString("input",temp);
                intent.putExtras(bundle);
                startActivity(intent);

            }
        });
  • Activity2
    顯示文字,按下按鈕後返回(關閉Activity2)
        textView=findViewById(R.id.Text);
        button=findViewById(R.id.b2);

        Bundle bundle=this.getIntent().getExtras();
        String msg=bundle.getString("input");
        textView.setText(""+msg);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

https://ithelp.ithome.com.tw/upload/images/20210130/20134772o934jNtw1Z.pnghttps://ithelp.ithome.com.tw/upload/images/20210130/201347722asR7WIx1j.png

startActivityForResult()

從Activity1跳轉到Activity2並等待Activity2結果

  • Activity1
    按下按鈕後進行跳轉
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                temp = editText.getText().toString();
                bundle.putString("input",temp);
                intent.putExtras(bundle);
                //更改
                startActivityForResult(intent,0);

            }
        });

用來接收Activity2回傳回來的值,顯示在textView上

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //333是自訂義,要跟Activity2一樣就行
        if(resultCode==333){
            Bundle bundle=data.getExtras();
            String msg=bundle.getString("input");
            textView.setText(""+msg);
        }

    }
  • Activity2
    顯示文字,按下按鈕把剛剛放在intent的東西傳過去Activity1後關閉Activity2
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity2.this.setResult(333,intent);
                finish();
            }
        });

https://ithelp.ithome.com.tw/upload/images/20210130/20134772Rp3vF52XSv.png


結語

intent是要出國的你,bundle是行李箱。

  • 將東西(temp)放進(put)行李箱裡,放進去要知道她叫甚麼("input")
    bundle.putString("input",temp);
  • 行李箱跟你走,行李箱放進你手裡面
    intent.putExtras(bundle);
  • 要出國了喔,不帶東西回家
    startActivity(intent);
  • 要出國了喔,帶東西回家
    startActivityForResult(intent,0);
  • 到家,拿對箱子(resultCode)再開箱
    onActivityResult()

尚未有邦友留言

立即登入留言