Activity間でどのようにデータを転送するかは、あなたが知っているデータを転送する方法をできるだけ説明し、その実装手順を詳しく説明してください.

4607 ワード

Activity間でどのようにデータを転送するかは、あなたが知っているデータを転送する方法をできるだけ説明し、その実装手順を詳しく説明してください.
答え:Intentオブジェクト、静的変数、クリップボード、グローバルオブジェクトでデータ転送できます.具体的なデータ転送方法は以下の通りです.
      1. Intentオブジェクト
Intentオブジェクトの場合、Activity間でデータを転送する従来の方法(サービスとBroadcastReceiverにも適しています).Intent.PutExtraメソッドは、転送するデータをIntent.getXxExtraメソッドは、転送されたデータを取得します.このうち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.アプリケーションのクラスで、任意のタイプのメンバー変数とメソッドを定義します.
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();