天天看點

使用Intent進行資料的傳遞講解與執行個體

如何使用Intent傳遞資料給下一個活動呢:

其實很簡單,在我們跳轉頁面的時候,隻要使用putExtra()方法将資料暫存到Intent中,然後在跳轉後的活動中,使用getxxx()方法獲得資料就可以了

執行個體展現:

效果展現:

使用Intent進行資料的傳遞講解與執行個體
使用Intent進行資料的傳遞講解與執行個體
效果分析:可以看到列印出了helloSecondActivity

實作代碼

1.修改FirstActivity中的代碼
public class FirstActivity extends AppCompatActivity {

    //建立按鈕對象   create button object
    private Button startBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        //綁定id    bind id
        startBtn = findViewById(R.id.first_btn);
        //設定監聽   set monitor
        startBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //建立将要傳遞的資料 create will transmit values
                String str = "hello SecondAcitity";
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                //資料通過putExtra()以鍵值對形式傳遞資料  use putExtra() by key-value transmit values
                intent.putExtra("hello",str);
                startActivity(intent);

            }
        });
    }
}
           
修改SecondActivity中的代碼
public class SecondActivity extends AppCompatActivity {

    private static final String TAG = "SecondActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
        //通過getIntent()方法獲得啟動獲得的Intent  use getIntent() get intet object
        Intent intent = getIntent();
        //通過getStringExtra()獲得資料  use getStringExtra() get values
        String str = intent.getStringExtra("hello");
        //列印資料 print values
        Log.e(TAG, "onCreate: "+str );

    }
}
           

over

如何使用Intent傳回資料給上一個活動:

效果展現:AS出現了點問題,以後截圖

具體代碼:

1.修改FirstActivity中的代碼:

public class FirstActivity extends AppCompatActivity {

    //建立按鈕對象   create button object
    private Button startBtn;
    private static final String TAG = "FirstActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        //綁定id    bind id
        startBtn = findViewById(R.id.first_btn);
        //設定監聽   set monitor
        startBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                //使用startActivityForResult()方法啟動頁面跳轉,參數1:intent對象,參數二:請求碼用于之後回調判斷資料的來源
                startActivityForResult(intent, );

            }
        });
    }
    //重寫onActivityResult()得到傳回的資料 參數1:請求碼 參數2:傳回資料時傳入的結果 參數三:傳回資料的intent
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //對requestCode進行選擇
        switch (requestCode) {
            case :
                if (resultCode == RESULT_OK) {
                    String str = data.getStringExtra("hello");
                    Log.e(TAG, "onActivityResult: " + str);
                }
                break;
            default:
        }

    }
}
           

2.修改SecondActivity中的代碼:重寫onBackPressed方法,監聽是否按了傳回鍵

public class SecondActivity extends AppCompatActivity {

    private static final String TAG = "SecondActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);


    }
    //重寫onBackPressed()在裡面實作傳回資料
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        String str = "hello FirstActivity";
        //建立Intent對象
        Intent intent = new Intent();
        intent.putExtra("hello",str);
        //setResult()方法專門向上一個活動傳回處理結果 參數1:處理結果一般為RESULT_OK或者RESULT_CALNCELED 參數2:帶有資料的intent
        setResult(RESULT_OK,intent);
        finish();
    }
}
           

over