android笔记之activity使用intent通信

activity之间可以使用intent进行通信
例如在ActivityA和ActivityB之间进行通信,使用intent传递数据
关键函数:
ActivityA:
startActivityForResult(Intent intent, int requestCode) //可将消息添加到intent中,利用intent传递消息
onActivityResult(int requestCode, int resultCode, Intent data)
//获得其它activity返回的消息
//requestCode是startActivityForResult中的requestCode数据
//resultCode是setResult中的resultCode数据

ActivityB:
getIntent(); //获得所传递过来的intent
setResult(int resultCode, Intent data); //将结果传递回ActivityA,一定放在finish函数之前,不然不会有效

示例:
在ActivityA中:

public class ActivityA extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a);

        Intent intent=new Intent(ActivityA.this,ActivityB.class);
        intent.putExtra("msg","hello,i'm ActivityA");        //将消息添加到intent中
        this.startActivityForResult(intent,0);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
        case 0:
            if (resultCode == Activity.RESULT_OK) {
                Bundle bundle=data.getExtras();
                String msg=bundle.getString("msg");
                Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();     
            } 
            else if (resultCode == Activity.RESULT_CANCELED) { 
            }
            break;
        case 1:
            // do something
            break;
        }
    }
}

在ActivityB中:

public class ActivityB extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a);

        Intent intent=getIntent();
        Bundle bundle=intent.getExtras();
        String msg=bundle.getString("msg");
        Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();     
    }

    @Override
    public void finish() {
        // TODO Auto-generated method stub
        Intent intent = new Intent();
        intent.putExtra("msg", "ActivityB had received your message");
        setResult(Activity.RESULT_OK, intent);
        super.finish();
    }
}   

猜你喜欢

转载自blog.csdn.net/u010503121/article/details/44775917