Activity間でどのようにデータを転送するかは、あなたが知っているデータを転送する方法をできるだけ説明し、その実装手順を詳しく説明してください.
4607 ワード
Activity間でどのようにデータを転送するかは、あなたが知っているデータを転送する方法をできるだけ説明し、その実装手順を詳しく説明してください.
答え:Intentオブジェクト、静的変数、クリップボード、グローバルオブジェクトでデータ転送できます.具体的なデータ転送方法は以下の通りです.
1. Intentオブジェクト
Intentオブジェクトの場合、Activity間でデータを転送する従来の方法(サービスとBroadcastReceiverにも適しています).Intent.PutExtraメソッドは、転送するデータをIntent.getXxExtraメソッドは、転送されたデータを取得します.このうちXxxはInt,Stringなどの文字列を表す.次のコードは、Intentオブジェクトを使用してintタイプの値を渡し、別のActivityで受信します.
intタイプの値を渡す
渡されたintタイプの値を取得
転送データの制限:Javaの単純なタイプのデータ(単純なタイプの配列を含む)のみを転送し、javaを実現する.io.Serializableのクラスのオブジェクトインスタンス(クラスメンバーもシーケンス可能である必要があります).
2. せいてきへんすう
クラスメンバーをpublic staticとして定義すると、クラスメンバーを介して直接データを渡すことができます.静的変数を使用して、任意のタイプのデータを渡すことができます.
3. せん断板
Androidシステムが提供するクリップボードを利用してデータにアクセスできます.コードは以下の通りです.
データをクリップボードに保存
クリップボードからのデータの取得
4. グローバルオブジェクト
アプリケーションごとにグローバルなオブジェクトを定義できます.このオブジェクトの作成はシステムが担当します.グローバルオブジェクトを使用するにはandroidから継承する必要があります.app.アプリケーションのクラスで、任意のタイプのメンバー変数とメソッドを定義します.
そしてAndroidManifestでxmlファイルでクラスを定義します.
MyAppクラスのオブジェクトは、アプリケーション内の任意の場所で次のコードで取得できます.
答え: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();