在android中,我们有时会用到在当前活动页面向下一个活动页面传递一些数据过去,而Intent中提供了一系列的putExtra()的方法重载,可以把我们所要传递到下一个活动的的数据暂时保存在Intent。然后在下一个活动页面中通过Intent中提供的方法再取出来就可以了。
第一个活动页面传递数据到下一个活动页面的代码
public class MainActivity extends AppCompatActivity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.tv); } public void btn(View view){ Intent intent = new Intent(MainActivity.this,TwoActivity.class); intent.putExtra("showdata","今天天气很好"); startActivity(intent); } }
第二个活动页面显示数据
public class TwoActivity extends AppCompatActivity { private TextView mTextView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.two_activity); mTextView = (TextView) findViewById(R.id.tv); Intent intent = getIntent(); String showdata = intent.getStringExtra("showdata"); mTextView.setText(showdata); } }
当然在有向下一个活动页面传递数据,当然就会有向上一个页面传递数据,如果想在下一个活动页面传递数据到上一个活动页面,我们可以在第一个页面的时候使用startActivityForResult(参数1,参数2),参数1代表的是当前你要跳转到哪一个页面的intent,而参数2是一个识别码,比如你在第一个活动页面有可能有好几个跳转页面,这时就需要通过识别码来判断你是做的哪个操作。
在第二个页面传递数据到第一个页面的时候,可以通过setResult(参数1,参数2); 参数1为结果码,一般为RESULT_OK,当然也可以其它参数,参数2为当前你传递数据到第一个活动页面的intent。
在第一个页面接收数据的时候需要调用 onActivityResult(requestCode,resultCode,data)方法,然后requestCode就是之前的识别码,resultCode就是第二个页面传递的结果码,data就是用来获取数据的。
代码看下面,MainActivity这个页面是接收数据显示的。TwoActivity这个页面是传递数据到上一个页面的。
public class MainActivity extends AppCompatActivity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.tv); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==1){ if(resultCode==RESULT_OK){ String textData = data.getStringExtra("textData"); mTextView.setText(textData); } } } public void btn(View view){ Intent intent = new Intent(MainActivity.this,TwoActivity.class); startActivityForResult(intent,1); } }
public class TwoActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.two_activity); } public void btn(View view){ Intent intent = new Intent(); intent.putExtra("textData","1212123"); setResult(RESULT_OK,intent); } }