0

プログラムをAndroidに移植しています。私はすべてのビジネスロジックをPOJOに持っているので、アクティビティを単なるフロントエンドとして使用する必要があります。

問題は、アクティビティ間でPOJOを共有する方法がわからないことです。私はこれを試しましたが、機能しません:

class Activity1 extends Activity{
Logic logic=new Logic();

public Logic getLogic(){
return logic
}
}

class Activity2 extends Activity{
Logic logic;
public void onCreate(Bundle savedInstanceState) {
    main = (Activity1) findViewById((R.id.Activity1);
    logic= main.getLogic(); 
}
}

POJOはデータを共有するためのものではなく、実際にはビジネスロジックが含まれていることに注意してください。

4

4 に答える 4

6

POJOは、Parcelableインターフェースを実装する必要があります。次に、putExtraを使用してそれらをインテント内に配置し、getParcelableExtraを使用して次のアクティビティでそれらを取得できます。http://developer.android.com/reference/android/os/Parcelable.html

于 2011-03-11T11:37:46.180 に答える
2

インテントを発行して1つのアクティビティから別のアクティビティを開始する場合は、メソッドを使用してPOJOを渡すことができますputExtra()getXXXExtra()インテントを受け取る新しいアクティビティでは、XXXがPOJOタイプである場合に、POJOを取り戻すことができます。

インテントとは何か、およびインテントがアクティビティとどのように連携するかをよりよく理解するには、http: //developer.android.com/guide/topics/intents/intents-filters.htmlも参照してください。

編集:ここの他の回答で述べられているように、ParceableまたはSerializableInterfaceのいずれかを実装する必要があります。

于 2011-03-11T11:30:52.887 に答える
2
main = (Activity1) findViewById((R.id.Activity1);

findViewByIdビューに対してのみ機能します!アクティビティは「画面」のようなものであり、ビュー自体ではないため、アクティビティに使用することを意図したものではありません。

ビジネスロジックがシングルトンである可能性がある場合は、そうすることをお勧めします。それが最も簡単な方法です。

于 2011-03-11T11:35:34.830 に答える
1

私はあなたが2つの異なることを混ぜ合わせているのを見ます:あなたがやろうとしたことのようではなく、findViewByIdあなたを得るでしょう。ViewActivity

ロジックがアクティビティ間の状態を維持する必要がない場合は、両方のアクティビティで新しいオブジェクトを作成するだけです。

Logic logic=new Logic();

状態を維持したい場合は、POJOであると想定して、2番目のアクティビティを「呼び出し」ているときにインテントを介してデータを送信できます。

intent.putExtra("MyInt", 123);
intent.putExtra("MyString", "hello!");
//...

そして2番目のアクティビティで

intent.getIntExtra("MyInt"); // 123
intent.getStringExtra("MyString"); //"hello!"

別のオプションは、区画可能を実装することです。そのリンクにサンプルがあります。

于 2011-03-11T11:43:29.767 に答える