开发者社区> 余二五> 正文

Activity初级:startActivityForResult、重写onActivityResult、setResult回传数据、requestCode请求码

简介:
+关注继续查看

main端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
 * 实现:主页面点击按钮1,跳转到页面二输入内容,点击页面二按钮返回主页面并显示输入信息;
 *     主页面点击按钮2,跳转到页面三输入内容,点击页面三按钮返回主页面并显示输入信息.
 * 主要步骤:
 * 1) startActivityForResult(intent, 0);
 * 2) 回传数据时,调用setResult(0, data)方法,然后执行finish()
 * 3) onActivityResult(int, int, Intent data)
 */
public class MainActivity extends Activity
{
    private static final int BTN_ONE = 1;//将常量封装定义
    private static final int BTN_TWO = 2;
                                  
    @Override//重写onActivityResult
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);//有参数的super必须重写
        TextView textView = (TextView) findViewById(R.id.textView1_main);
                                      
        if(requestCode == BTN_ONE)//根据请求码判断接收内容
        {
            String str = data.getStringExtra("one");
            textView.setText(str);
        }
        else if(requestCode == BTN_TWO)
        {
            String str = data.getStringExtra("two");
            textView.setText(str);
        }
                                      
    }
                                  
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                                      
        //监听button1,跳转到NextActivity,等待result
        Button button1=(Button) findViewById(R.id.button1_main);
        button1.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(MainActivity.this,NextActivity.class);
                startActivityForResult(intent, BTN_ONE);
            }
        });
                                      
        //监听button2,跳转到ThirdActivity,等待result
        Button button2 =(Button) findViewById(R.id.button2_main);
        button2.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
               Intent intent = new Intent(MainActivity.this,ThirdActivity.class);
               startActivityForResult(intent, BTN_TWO);
            }
        });
    }
                                  
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}


next端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class NextActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_next);
                                   
        Button button =(Button) findViewById(R.id.button1_next);
        button.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //得到用户数据
                EditText editText=(EditText) findViewById(R.id.editText1_next);
                String strone = editText.getText().toString();
                                           
                //回传数据
                Intent data = new Intent();
                data.putExtra("one", strone);
                setResult(1, data );
                                           
                //关闭当前窗口
                finish();
            }
        });
    }
                               
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.next, menu);
        return true;
    }
}


third端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class ThirdActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
                                
        Button button = (Button) findViewById(R.id.button1_third);
        button.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                EditText editText = (EditText) findViewById(R.id.editText1_third);
                String strtwo = editText.getText().toString();
                Intent data = new Intent();
                data.putExtra("two", strtwo);
                setResult(2,data );
                finish();
            }
        });
    }
                            
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.third, menu);
        return true;
    }
}




本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1195845,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
还在用startActivityForResult处理数据传递?试试ActivityResultContract吧
还在用startActivityForResult处理数据传递?试试ActivityResultContract吧
320 0
startActivityForResult解析
startActivityForResult解析
61 0
是时候丢掉 onActivityResult 了 !
是时候丢掉 onActivityResult 了 !
85 0
解决Fragment多层嵌套时onActivityResult无法正确回调的问题
解决Fragment多层嵌套时onActivityResult无法正确回调的问题
190 0
Android中关于登陆拦截逻辑流程(Intent传递使用步骤)
Android中关于登陆拦截逻辑流程(Intent传递使用步骤) 问题: 我们在开发中经常遇到这样的需求,当前用户在A界面点击按钮想跳到C界面,但是该用户当前并未登陆账户,此时我们就想让用户在跳到C界面之前跳到B界面进行登陆操作,当登陆成功时候直接跳到C界面,整个思路流程如下图所示; 解决方式.
2123 0
Activity与Fragment的onActivityResult细节
在Fragment中跳转到另一个Activity,返回时是调用Activity的onActivityResult呢?还是调用Fragment的onActivityResult呢? 我当然知道,只不过我再碰到时忘记了,然后每次忘记都要从新去网上找,不如做个Test然后记录下来。
1111 0
+关注
余二五
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载