啟動一個新的activity並攜帶數據,返回數據給上一個activity


一、在啟動一個新的activity的時候可以通過Intent攜帶數據,通過Intent.putExtra()方法通過鍵值對的形勢裝入數據。在新啟動的activity中通過               getIntent()方法獲取啟動activity的Intent,並通過getxxxxExtra()獲取傳遞的數據。

二、如果希望被啟動的新activity返回數據,則需要使用startActivityForResult()啟動新的activity,方法攜帶兩個參數,第二個為請求碼,用於返回時判斷是由哪個activity返回的,另一個是Intent.需要重寫onActivityResult(int requestCode,int resultCode,Intent data)方法獲取返回的數據。在新的activity中通過setResult()方法設置要回傳的數據,該方法接收2個參數,第一個為返回碼,只能是RESULT_OK和RESULT_CANCELED這兩個值,第二個參數是一個攜帶數據的Intent,

  調用finish()方法可結束當前activity。

  示例代碼如下:

  

public class MainActivity extends Activity {
Button btn1;
TextView text1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = (TextView) findViewById(R.id.text1);
btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str1 = new String("我愛麥麥媽媽");
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("dataSend",str1);
startActivityForResult(intent,1);
// startActivity(intent);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 1){
text1.setText(data.getStringExtra("backString"));
}
}
}

public class SecondActivity extends Activity {
TextView text2;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
Intent intent1 = getIntent();
String getString = intent1.getStringExtra("dataSend");
text2 = (TextView) findViewById(R.id.text2);
text2.setText(getString);
btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentTemp = new Intent();
intentTemp.putExtra("backString","北極熊愛企鵝");
setResult(1,intentTemp);
finish();
}
});
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM