2011-11-10 13 views
0

私はBluetoothアプリケーションを使用しています。スレッドには入力メッセージと2つのアクティビティ、つまりメインメニューとBluetoothコンソールがあります。私は、メニューの活動で接続を作ってるんだ、と私は、コンソール活動にいくつかのオブジェクトを渡す必要があります:複雑なオブジェクトをアクティビティに渡す

  • スレッドの参照がメインの活動
  • からそのwrite()メソッド
  • コンテキストを使用します
  • と私はeventualy

私はIntent.putExtraを使用してparceableクラスオブジェクトoを、シリアライズを渡すことについて読んをチェックする必要がありブール。私は渡す必要のあるオブジェクトを持つクラスを作成しましたが、これを行う方法、またはシリアライズ可能であり、意味のあるものが何であるかはわかりません。

これらのオブジェクトをアクティビティから別のものに渡す簡単な方法はありませんか?

+0

活動は、独自のコンテキストを持って使用します。 getApplicationContext() – sgarman

+0

Trueです。しかし、私はまだそのスレッドのメソッドとブール値にアクセスする必要があります –

答えて

1

あなたはApplicationを拡張し、そのクラスに共有オブジェクトを置くことができます:http://flexjson.sourceforge.net

を使用すると、次の操作を実行する必要がアンドロイドのバグがあります。次のようなものがあります。

public class MyApplication extends Application { 
    private boolean myBoolean; 

    public boolean getMyBoolean() { return myBoolean; } 
} 

ここには、グローバル変数を使用することができます。

があるmyApplicationにアプリのアプリケーションを設定するには、あなたがそれを渡す必要はありませんので、AndroidManifest.xmlを

<application ... android:name=".MyApplication"> 
+0

それは、それが2つのマニフェストで使用されていたのと同じアプリケーションタグであることを理解するのにはしばらく時間がかかりました。それは完全に動作します:) –

0

短い答えです。いいえ。アクティビティはプロセス間にまたがる可能性があるため、相互に分離されているため、唯一のポータブルなオプションはそれらをシリアル化することです。しかし、Flexjsonのようなライブラリを使用して、Intent.putExtra()を使用してプレーンな古いJava Beanを直列化することができます。パーセルとの直列化を手作業で書くよりもずっと簡単です。チェックアウト:

/** Fix for Android bug http://code.google.com/p/android/issues/detail?id=5697 */ 
Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); 
関連する問題