• 初学Android:意图之intent


    Intent意为:意图。简单的理解就是用来从一个Activity/Service跳转到另一个Activity/Service中,并可以携带数据,也可以在这个程序调用别的程序。这样我们虽然不懂如何结息条形码,却可以通过开放的android平台,在我们的程序调用专家写好的程序来实现功能。

    Intent的用法:

    (1)从MainActivity不携带数据跳转到NewActivity

    Intent intent=new Intent(MainActivity,this,NewActivity.this);

    startAcitivity(intent);

    (2)从MainActivity携带数据跳转到NewActivity,

    Intent intent=new Intent(MainActivity,this,NewActivity.this);

    ----------------------------------------------------------------------------------------

    Bundle bundle=new Bundle();

    bundle.putString("name", "value");

    intent.putExtras(bundle);//注意有加S,bundle可以放入多组值要与intent.putExtra()进行区别

    ---------------------------------------------------------------------------------------------------------

    intent.putExtra("name","value");

    ---------------------------------------------------------------------------------------------------------------

    startAcitivity(intent);

    接收

    mintent=this.getIntent();//注意点!用this.getIntent()而不是new出来的

    String a=mintent.getStringExtra("name");

    ---------------------------------------------------------------------------------

    第一种方法当bundle的值要传给多个activity时较为简便。

    (3)从MainActivity跳转到NewActivity,并携带数据,并且要从NewActivity跳转回MainActivity且携带数据。

    Intent intent=new Intent(MainActivity.this,NewActivity.class);
    Bundle bundle=new Bundle();
    bundle.putString("name","value");
    intent.putExtras(bundle);
    startActivityForResult(intent,1234);

    protected void onActivityResult(int requestCode,int resultCode,Intent data)
    {
      if (resultCode==4321)
      {
        String a=data.getStringExtra("name");
        Toast.makeText(this, a, Toast.LENGTH_LONG).show();;
      }
      super.onActivityResult(requestCode, resultCode, data);
    }

    //请求码requestCode=1234

    Intent mintent=new Intent(this,MainActivity);

    mintent.putExtra("name", "你好");
    setResult(4321, mintent);//4321为结果码
    finish();

    //程序例子A调用程序例子B

    intent.setClassName("com.example.lizib", "com.example.lizib.MainActivity");
    Bundle bundle=new Bundle();
    bundle.putString("STR_INPUT", "HI,我来自例子A...");
    intent.putExtras(bundle);
    startActivityForResult(intent, 1234);

    protected void onActivityResult(int requestCode,int resultCode,Intent data)
    {
    if (resultCode!=RESULT_OK)
    {
    return;
    }
    else
    {
    String aaa=data.getStringExtra("STR_BACK");
    tv.setText("来自例子B:"+aaa);
    }
    super.onActivityResult(requestCode, resultCode, data);
    }

    //接收

    Bundle bundle=getIntent().getExtras();
    strRet=bundle.getString("STR_INPUT");

    //返回

    Bundle bundle=new Bundle();
    bundle.putString("STR_BACK", "我是例子B");
    Intent intent=new Intent();
    intent.putExtras(bundle);
    setResult(RESULT_OK,intent);
    finish();

  • 相关阅读:
    Python 解决: from pip import main ImportError: cannot import name 'main'
    tensorflow学习笔记
    python多线程、多进程相关知识
    灰度发布相关
    自定义flume的hbase sink 的序列化程序
    pyspark数据准备
    利用pipeline批量插入数据到redis
    CentOS Linux系统下更改Apache默认网站目录
    更改nginx网站根目录
    chkconfig用法
  • 原文地址:https://www.cnblogs.com/hsshy/p/4748971.html
Copyright © 2020-2023  润新知