一、在启动一个新的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(); } }); }}
时间: 2024-10-05 09:16:32