0

私はiOSのバックグラウンドから来たAndroidプログラミング(およびJava)に非常に慣れていません。私がやろうとしているのは、あるアクティビティから別のアクティビティにフラグメントへのポインタを渡すことです。

基本的に、ログイン画面と登録画面BeginActivityのいくつかを処理するという開始アクティビティがあります。ログインしたら、次のコードを使用してFragments呼び出されたアプリのメイン アクティビティを読み込みます。TabsFragmentActivity

public void loggedIn() {
    Intent intent = new Intent(this, TabsFragmentActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    this.startActivity(intent);

    finish();
}

FLAG_ACTIVITY_CLEAR_TOP最初に実際にログアウトせずにユーザーに戻ってほしくないので、私は使用しています。

今問題:

BeginActivityユーザーデータを保持するフラグメントへのポインターがあります。最初のいくつかのビューフラグメントがからアクセスできるシングルトンのように使用していますBeginActivity

TabsFragmentActivity呼び出す前に、この同じオブジェクトを new に渡す必要がありますfinish()

どうすればいいですか?使用できることはわかっていますputExtra()が、それは文字列などのためだけであり、他のフラグメントではないと思います。

ポインタを「つかむ」ためにTabsFragmentActivity参照できる新しく作成された方法はありますか?BeginActivity

ありがとう

4

2 に答える 2

1

まず、フラグメントとアクティビティのライフサイクルについて確認する必要があります。

フラグメントは、再利用可能な UI の複雑なコンポーネントになるように設計されています。アクティビティのように見えますが、再利用できます。したがって、同じフラグメントを含む必要な数のアクティビティを作成できますが、これらのフラグメントの同じインスタンスは作成できません。

別のアクティビティにユーザー データを渡すだけの場合は、 and を使用する必要がありBundleますputExtra()implements Serializable or Parcelable Interfaces@gheeseが言ったように、ユーザーデータ型に応じて必要になる場合があります。

フラグメントの同じ UI 外観を 2 つ以上のアクティビティで使用する場合は、 と を使用BundleputExtraます。この動作が必要な各アクティビティには、Fragmentこのフラグメントを開始する瞬間にgetActivity().getIntent().getExtra 、ユーザー情報を取得してフラグメントに入力するために使用できるフィールドが含まれている必要があります。

于 2013-04-11T13:18:54.177 に答える
1

基本的に、インテントを介してクラスを渡すことができる必要があります。Serializable / Parcelable インターフェイスを見てください。

この質問にはあなたが必要とする答えがあります

Android であるアクティビティから別のアクティビティにオブジェクトを渡す方法

于 2013-04-11T11:20:45.567 に答える