如何使用Intent傳遞資料給下一個活動呢:
其實很簡單,在我們跳轉頁面的時候,隻要使用putExtra()方法将資料暫存到Intent中,然後在跳轉後的活動中,使用getxxx()方法獲得資料就可以了
執行個體展現:
效果展現:
效果分析:可以看到列印出了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();
}
}