手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

android 使用intent返回数据给上一个activity

时间:2024-10-13 08:46:22

1、首先,创建一个android工程IntentTest,然后给这个主activity增加一个按钮,这个按钮用来启动另一个activity

android 使用intent返回数据给上一个activity

2、然后创建一个新的activity,activity2,用来接收上一个activity传递过来的数据

android 使用intent返回数据给上一个activity

3、处理第一个activity中的按钮。增加了如下代码:Button b = 猾诮沓靥(Button)findViewById(R.id.button); b.setOnClickList髫潋啜缅ener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, activity2.class);startActivityForResult(intent, 100); } });可以看到,这里使用了startActivityForResult()方法。这个方法的意思是,期待从下一个activity中获取数据。那么,这个100是什么意思呢?这个是唯一标识码,代表着第二个activity。比如,当前有多个activity会返回数据给第一个activity,那么第一个activity如何知道他获取到的数据是哪一个activity给他的呢?就是通过这个标识码进行判断的。

android 使用intent返回数据给上一个activity

4、然后,我们处理第二个activity的代码。现在,我们给这个activity也增加一个按钮,当点击按钮的时候,会退出当前界面,并返回数据给上一个activity.首先,在layout增加一个按钮。<Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="返回数据给第一个activity" />

android 使用intent返回数据给上一个activity

5、然后,在actiivty2.java中,增加对这个按钮的处理Button b 屏顿幂垂= (Button)findViewById(伊怕锱鳏R.id.button2); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.putExtra("data_return", "Hello"); setResult(RESULT_OK, intent); finish(); } });可以看到,这里创建了一个新的intent,因为这个intent不需要任何意图,所以参数为空,这个intent就是要返回给上一个activity的intent.同样的用法,使用了intent.putExtra()增加了一些额外数据,然后通过setResult将数据传递给上一个数据,第一个参数一般是RESULT、RESULT_CANCELED

android 使用intent返回数据给上一个activity

6、当然,并不是调用了setResult(RESULT_OK, intent);之后,第一个activity立刻能收到数据。而是我们调用了finish()方法销毁当前活动后,会调用第一个activity的onActivityResult()方法,这个方法在哪里呢?我们需要重写

7、回到第一个activity,我们重写onActivityResult()。@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 100: if (resultCode == RESULT_OK) { String returnedData = data.getStringExtra("data_return"); Toast.makeText(MainActivity.this,returnedData , Toast.LENGTH_LONG).show(); } break; default: } }代码所示,首先判断标识符,确定是100则知道了是哪一个activity传递给我们的,然后判断是RESULT_OK还是RESULT_CANCELED,并对数据进行处理,通过toast显示出来

android 使用intent返回数据给上一个activity

8、最后的效果图如下

android 使用intent返回数据给上一个activity
© 手抄报圈