ビジネスロジックがカスタム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);
}
しかし、私はこれが良い方法ではないと感じています。 Intent
のFragment
を渡すことは、私には残酷であるようです。このシリアル化はすべてコストがかかります。私は代わりにクラス名を渡すことができます..または良い方法がありますか?または、それぞれ(フルスクリーンの)Activity
を1つ持っていなければなりませんFragment
?ヒントありがとう。それはあなたのために便利だとプロジェクトがあまりにも大きくない場合は、プロジェクト全体のために1 Activity
を使用することができます
なぜ 'Fragment'を新しい' Activity'に渡したいのですか?とにかく新しい/別の情報を表示していないでしょうか?新しい 'Fragment'を新しい' Activity'でインスタンス化するだけでなく、新しい 'Fragment'が' Intent'で必要とするデータを渡すのはなぜですか? – Bryan
ええ、私はこれが意味をなさないので答えるのが難しいと思います。どのユースケースを解決しようとしていますか?現在解決されているソリューションのパスとは何も関係がないかもしれないので、 – CQM
私は、フラグメントの名前だけが異なるペーストされたアクティビティをたくさんコピーしたくありません。 –