2016-07-20 3 views
2

ビジネスロジックがカスタムFragmentですでに処理されているため、各タスクに新規のActivityを作成したくありません。私はそれを使用すると、特定のFragmentによって初期化され、一般的なActivityを作成したい汎用目的のフラグメントアクティビティ

<FrameLayout .. > 
    <LinearLayout .. 
    android:id="@+id/fragment" /> 
</FrameLayout> 

:一般的なレイアウトがあります。

public class LeliFragmentActivity extends LeliBaseActivity { 
public static final String KEY_FRAGMENT = BuildConfig.APPLICATION_ID + ".FRAGMENT"; 

protected void onCreate(Bundle state) { 
    super.onCreate(state); 
    setContentView(R.layout.activity_with_fragment); 

    Fragment fragment = (Fragment) getIntent().getSerializableExtra(KEY_FRAGMENT); 
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
    transaction.replace(R.id.fragment, calcFragment); 
    transaction.commit(); 
} 

public static void start(Context c, LeliBaseFragment fragment) { 
    Intent intent = new Intent(c, LeliFragmentActivity.class); 
    intent.putExtra(KEY_FRAGMENT, fragment); 
    c.startActivity(intent); 
} 

しかし、私はこれが良い方法ではないと感じています。 IntentFragmentを渡すことは、私には残酷であるようです。このシリアル化はすべてコストがかかります。私は代わりにクラス名を渡すことができます..または良い方法がありますか?または、それぞれ(フルスクリーンの)Activityを1つ持っていなければなりませんFragment?ヒントありがとう。それはあなたのために便利だとプロジェクトがあまりにも大きくない場合は、プロジェクト全体のために1 Activityを使用することができます

+1

なぜ 'Fragment'を新しい' Activity'に渡したいのですか?とにかく新しい/別の情報を表示していないでしょうか?新しい 'Fragment'を新しい' Activity'でインスタンス化するだけでなく、新しい 'Fragment'が' Intent'で必要とするデータを渡すのはなぜですか? – Bryan

+1

ええ、私はこれが意味をなさないので答えるのが難しいと思います。どのユースケースを解決しようとしていますか?現在解決されているソリューションのパスとは何も関係がないかもしれないので、 – CQM

+0

私は、フラグメントの名前だけが異なるペーストされたアクティビティをたくさんコピーしたくありません。 –

答えて

1

まず

。しかし、プロジェクトが大きく、たくさんのFragmentが含まれている場合は、それらを異なるアクティビティで論理的な順序に分割する方がよいでしょう。たとえば、LoginActivityは、すべての歌/登録フローを多く表します(Fragment)。すべての必要なFragment

セカンド

LeliFragmentActivityよりもあなたがお互いに自分のFragment秒を渡す必要はありません。フラグメント間の通信には、ドキュメントのようにintrefacesを使用する最も簡単で簡単な方法があります。

他の可能な通信方法は、EventBusまたはOttoのようなイベントバスライブラリです。

+0

応答をありがとうが、私の意図は異なっていた。私は数十のif-elseを持つ1つの膨大なアクティビティを持つことを望んでいませんでした。 ChartsFragment、次にBadgesFragmentまたはLoginFragmentをレンダリングする単一のシンプルなアクティビティが必要でした。 –

+0

@LeosLiterak問題は何ですか? –

+0

@bryanと私の議論を見てください –

関連する問題