设为首页 加入收藏

TOP

Android入门(二)Activity-Toast、Intent(五)
2017-10-12 18:05:10 】 浏览:1569
Tags:Android 入门 Activity-Toast Intent
getIntExtra()方法,传递的是布尔型数据,则使用 getBooleanExtra()方法,以此类推。

    

    4、返回数据给上一个活动

    既然可以传递数据给下一个活动, 那么能不能够返回数据给上一个活动呢?答案是肯定的。不过不同的是,返回上一个活动只需要按一下 Back键就可以了,并没有一个用于启动活动 Intent来传递数据。通过查阅文档你会发现,Activity中还有一个 startActivityForResult()方法也是用于启动活动的, 但这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。毫无疑问,这就是我们所需要的。startActivityForResult()方法接收两个参数,第一个参数还是 Intent,第二个参数是请求码,用于在之后的回调中判断数据的来源。我们还是来实战一下,修改 FirstActivity中按钮的点击事件,代码如下所示:

button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        startActivityForResult(intent, 1);
    }
});

    这里我们使用了 startActivityForResult()方法来启动 SecondActivity,请求码只要是一个唯一值就可以了,这里传入了 1。接下来我们在 SecondActivity中给按钮注册点击事件,并在点击事件中添加返回数据的逻辑,代码如下所示:

public class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.second_layout);
        Button button2 = (Button) findViewById(R.id.button_2);
        button2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("data_return", "Hello FirstActivity");
                setResult(RESULT_OK, intent);
                finish();
            }
        });
    }
}

    可以看到,我们还是构建了一个 Intent,只不过这个 Intent仅仅是用于传递数据而已,它没有指定任何的“意图” 。紧接着把要传递的数据存放在 Intent中,然后调用了 setResult()方法。这个方法非常重要,是专门用于向上一个活动返回数据的。setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般只使用 RESULT_OK 或RESULT_CANCELED这两个值,第二个参数则是把带有数据的 Intent传递回去,然后调用了 finish()方法来销毁当前活动。由于我们是使用startActivityForResult()方法来启动 SecondAct

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇1. 从系统架构到Hello World 下一篇Android入门(九)文件存储与Shared..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目