为了账号安全,请及时绑定邮箱和手机立即绑定

Android Intent学习笔记1

标签:
Android

当我们打开一个Activity时,我们就会用到Intent(意图),正如它名字一样,我们可以发送一个Intent对象来让系统打开我们所需要的组件。

     比如,打开一个Activity:在我们的app中,一个Activity会占用整个屏幕。我们可以创建一个新的Activity实例将Intent对象传递给Context.startActivity(Intent intent)方法,这个Intent描述啦你想要打开的Activity以及可以携带一些你想要的信息。当我们打开的Activity结束时,如果有信息返还,则在发送Intent时调用startActivityForResult(Intent intent,int requestCode)方法,第二个参数为你发送请求的参数,可以发送不同的请求,来对结果进行不同的处理,同时,还要在发送Intent的Activity中重写onActivityResult(int requestCode,int resultCode,Intent data)方法,第一个参数为你发送的请求状态码,第二个参数为返回的结果状态码,第三个参数为携带返回的数据的Intent。

     接下来是一个简单的demo,创建两个简单的Activity,布局比较简单,就不贴啦。

     MainActivity.java

package com.flying.xiaopo.intentdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends Activity implements View.OnClickListener {
    private Button btn_start_activity, btn_start_activity_for_result;
    public static final int REQUEST_CODE = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_start_activity = (Button) findViewById(R.id.btn_start_activity);
        btn_start_activity_for_result = (Button) findViewById(R.id.btn_start_activity_for_result);
        btn_start_activity.setOnClickListener(this);
        btn_start_activity_for_result.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setClass(this, SecondActivity.class);
        switch (v.getId()){
            case R.id.btn_start_activity:
                startActivity(intent);
                break;
            case R.id.btn_start_activity_for_result:
                setResult(RESULT_OK,intent);
                startActivityForResult(intent,REQUEST_CODE);
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Toast.makeText(this,"requestCode is" + requestCode + ",resultCode is" + resultCode,Toast.LENGTH_SHORT).show();
    }
}

     SecondActivity.java

package com.flying.xiaopo.intentdemo;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

/**
 * Created by lenovo on 2015/6/21.
 */
public class SecondActivity extends Activity {
    private Button btn_back;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        btn_back = (Button) findViewById(R.id.btn_back);
        Log.d("TAG", "Create");
        btn_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setResult(RESULT_OK);
                finish();
            }
        });
    }
}

接下来看一下效果:

5be7dcd70001901203650645.jpg

spacer.gif

当我们直接startActivity时,关闭打开的Activity,并没有结果返回,而当我们通过startActivityForResult打开时,当被打开的Activity调用finish()方法时,向其父Activity传递啦结果码,当然这里没有绑定data,具体方法可以查API哈。

Caution:这里传递intent的Activity不可以finish(),要是同一个实例。

     同时,通过Intent,我们可以打开许多不同的组件,比如打开一个服务,调用startService()或调用bindService(),接受一个BroadReciver,通过调用sendBroadcast(),sendOrderedBroadcast()或sendStickyBroadcast()方法,具体的在我整理Service和Broadcast时会写把。

原文链接:http://www.apkbus.com/blog-592372-59022.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消