startActivityForResul完整详解示例
来源:互联网 发布:胡翼青 知乎 编辑:程序博客网 时间:2024/05/17 01:17
MainActivity如下:
AnotherActivity如下:
main.xml如下:
another.xml如下:
strings.xml如下:
package cc.vv;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** * Demo描述: * startActivityForResul使用示例 * * 利用startActivityForResult跳转到其余Activity * 当第二个Activity关闭时将数据返回给第一个Activity * 在第二个Activity调用finish()或者按下Back键的时候回传数据 * */public class MainActivity extends Activity {private Button mButton;private int requestCode_test=9527;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mButton = (Button) findViewById(R.id.button);mButton.setOnClickListener(new ButtonOnClickListener());}/** * 利用startActivityForResult()的方式打开一个新的Activity * * 注意:startActivityForResult(intent,requestCode)方法的参数 * requestCode表示本次startActivityForResult()操作的请求码 * 因为在同一个Activity中根据业务的不同,可能需要在多处 * 调用startActivityForResult()方法.所以为了区分每次 * startActivityForResult()的操作为其设置一个requestCode */private class ButtonOnClickListener implements OnClickListener {public void onClick(View v) {Intent intent = new Intent();intent.setClass(getApplicationContext(), AnotherActivity.class);startActivityForResult(intent, requestCode_test);}}/** * 利用onActivityResult()处理新Activity关闭时的回传数据 * * 注意:onActivityResult(int requestCode,int resultCode,Intent data)方法的参数 * 1 requestCode如上描述,区分了不同的startActivityForResult()调用 * 2 resultCode表示新Activity中处理结果的状态. * 比如某项操作是否成功,是否有异常等 * 3 data新Activity回传的数据 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode==requestCode_test) {if (resultCode==RESULT_OK) {System.out.println("requestCode="+requestCode+",resultCode="+resultCode);String name = data.getStringExtra("name");int age = data.getIntExtra("age", 0);System.out.println("回传参数:name="+name+",age="+age);}}}}
AnotherActivity如下:
package cc.vv;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** * 当该Activity调用finish()或按下Back键时利用setResult()回传数据 */public class AnotherActivity extends Activity {private Button mButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.another); mButton=(Button) findViewById(R.id.closeButton); mButton.setOnClickListener(new ButtonOnClickListenerImpl());}private class ButtonOnClickListenerImpl implements OnClickListener{@Overridepublic void onClick(View v) {setResultData();finish();}}/** * 注意: * onBackPressed()在源码中会调用到finish()方法. * 所以将setResultData()置于super.onBackPressed()之前 */@Overridepublic void onBackPressed() {setResultData();super.onBackPressed();}private void setResultData(){Intent intent=new Intent();intent.putExtra("name", "喜羊羊");intent.putExtra("age", 2);setResult(RESULT_OK, intent);}}
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="@string/mainActivity_tip" android:textSize="25sp" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="@string/button_tip" android:textSize="25sp"/></RelativeLayout>
another.xml如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="200dip" android:layout_height="50dip" android:layout_centerHorizontal="true" android:layout_marginTop="50dip" android:gravity="center" android:text="@string/anotherActivity_tip" /> <Button android:id="@+id/closeButton" android:layout_width="150dip" android:layout_height="50dip" android:layout_centerInParent="true" android:layout_marginTop="50dip" android:gravity="center" android:text="@string/closeActivity" /></RelativeLayout>
strings.xml如下:
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">TestActivity3</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="button_tip">跳转到下一个Activity</string> <string name="mainActivity_tip">测试startActivityForResult</string> <string name="anotherActivity_tip">这是第二个Activity</string> <string name="closeActivity">关闭该Activity</string> </resources>
0 0
- startActivityForResul完整详解示例
- Android 通信录 完整示例编程详解
- Android多线程断点下载完整示例详解
- Android情景模式、文件管理器 完整示例编程详解
- Fragment详解(三)--->横竖屏幕切换完整示例
- Fragment详解(三)--->横竖屏幕切换完整示例
- Android情景模式、文件管理器 完整示例编程详解
- startActivityForResul的用法
- snmp4j完整示例
- AdvancedDataGrid完整示例
- AdvancedDataGrid完整示例
- Spring + iBATIS完整示例
- nginx完整配置示例
- RatingBar使用完整示例
- ant完整示例
- CountDownTimer完整详细示例
- log4net完整示例
- FutureTask使用完整示例
- 图解GitHub和SourceTree入门教程
- Fragment
- hdu A Bug's Life 并查集 关系标记
- 肉皮三鲜煲的做法
- LeetCode-Search in Rotated Sorted Array
- startActivityForResul完整详解示例
- 2014移动互联网入口之争剧变速度
- cocos2d-x 3.2里lua binding注意事项
- textView 设置右图标
- 个人网站建设基本步骤解析
- 问题:关于一个贴友的js留言板的实现
- 创建桌面图标和删除桌面图标 android
- 链表(单双链表)用法与基本操作(构建、查找、插入、删除)实现
- HDU 4998 Rotate 平面坐标变换