• 在Activity之间如何传递数据,请尽可能说出你所知道的传递数据的方法,并详细描述其实现过程。


    在Activity之间如何传递数据,请尽可能说出你所知道的传递数据的方法,并详细描述其实现过程。

      答案:可以通过Intent对象、静态变量、剪切板和全局对象进行数据传递,具体的数据传递方法如下。

          1. Intent对象

         Intent对象时在Activity之间传递数据的传统方式(同样适合于Service和BroadcastReceiver)。可以通过Intent.putExtra方法设置要传递的数据,通过Intent.getXxxExtra方法获取传递的数据。其中的Xxx表示Int、String等字符串。下面代码使用Intent对象传递一个int类型的值,并在另一个Activity中接收该值。

         传递int类型的值

    1 Intent intent=new Intent(this,MyActivity.class);
    2 //保存Integer类型的值
    3 intent.putExtra("intent_integer",300);
    4 startActivity(intent);

         获取传递的int类型的值

    1 int intentInteger=getIntent().getExrtras().getInt("intent_integer");

      传递数据的限制:只能传递Java简单类型的数据(包括简单类型的数组)以及实现了java.io.Serializable的类的对象实例(类成员也必须是可序列化的)。

         2. 静态变量

        将类成员定义成public static,就可以直接通过类成员来传递数据。使用静态变量可以传递任何类型的数据。

         3. 剪切板

        可以利用Android系统提供的剪切板存取数据,代码如下:

        将数据保存在剪切板中

      

    1 Intent intent=new Intent(this,MyActivity.class);
    2 //获得管理剪切板的对象(ClipboardManager)
    3      ClipboardManager  clipboard=(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
    4 //向剪切板保存字符串
    5 ClipData cd=ClipData.newPlainText("label","通过clipboard传递的数据");
    6 clipboard.setPrimaryClip(cd);
    7 startActivity(intent);

        从剪切板获取数据

    ClipboardManager  clipboard=(ClipboardManager)getSystemService(context.CLIPBOARD_SERVICE);
    //从剪切板中获得字符串
    if(clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN){
        ClipData cd=clipboard.getPrimaryClip();
            Item item=cd.getItemAt(0);
            txtView.setText(item.getText().toString());
    }

       4. 全局对象

      可以为每一个应用程序定义一个全局的对象。该对象的创建由系统负责。使用全局对象需要一个继承自android.app.Application的类,并在该类中定义任何类型的成员变量和方法。

    1 public class MyApp extends Application
    2     {
    3         public String country;
    4         public Data data=new Data();//Data类不需要可序列化
    5     }

      然后在AndroidManifest.xml文件中定义该类。

    <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="   "
            android:versionCode="1"
            android:versionName="1.0">
        <application android:name=".MyApp" android:icon="@drawable/icon" android:label="@String/app_name">
        ......
        </manifest>

      可以在应用程序中的任何地方通过如下代码获取MyApp类的对象。

      

    MyApp myapp=(MyApp)getApplicationContext();
  • 相关阅读:
    “朋友圈”又添好友,DataPipeline与统信服务器操作系统完成产品互认证
    DataPipeline与飞腾完成产品兼容性互认证,携手共建自主IT底层生态
    「山东城商行联盟」数据库准实时数据采集系统上线,DataPipeline助力城市商业银行加快数字化转型
    DataPipeline 实时数据融合产品入驻青云云市场,催化企业数据价值释放
    2020年净利暴涨1288%,遨森电商携手DataPipeline构建实时数据融合体系跑出加速度!
    宏昆酒店集团携手DataPipeline打造实时数据融合平台,酒店业精益管理的新秘诀
    销售易携手DataPipeline,推动“实时感知主动决策客户成功”的变革!
    DataPipeline助力悠星网络出海,以实时数据管理护航爆款游戏
    FIGR/IR业务流程
    ABAP调用堆栈
  • 原文地址:https://www.cnblogs.com/dazuihou/p/3585061.html
Copyright © 2020-2023  润新知