zoukankan      html  css  js  c++  java
  • 在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();
  • 相关阅读:
    SpringBoot入门(一)——开箱即用
    四六级成绩查询,你的『验证码』刷出来了吗?
    Kubernetes 在网易云中的落地优化实践
    漫画:深入浅出 ES 模块
    两分钟了解Docker的优势
    浅析Kubernetes的工作原理
    常用数据清洗方法大盘点
    移动端推广APP防作弊机制之依我见
    十一、观察者模式(Observable、Observer)
    paip.最新的c++ qt5.1.1环境搭建跟hello world
  • 原文地址:https://www.cnblogs.com/dazuihou/p/3585061.html
Copyright © 2011-2022 走看看