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();
  • 相关阅读:
    ultraEdit使用utf8乱码的解决办法
    利用替换字符串的函数StringReplace删除字符串中指定的字符或字符串
    COBID,CanID,NodeID的不同
    随机生成一个10位的数字(来自大富翁)
    Delphi2010下,Unit aliases会影响到Code Insight功能?
    使用鼠标拖曳的方式移动、更改panel控件的大小
    将四个BYTE数值转换成IEEE754标准的浮点数
    判断shift,ctrl,alt键是否按下
    获取邮箱中的用户名
    IFM控制器中关于支线长度的说明
  • 原文地址:https://www.cnblogs.com/dazuihou/p/3585061.html
Copyright © 2011-2022 走看看