我不想为每个任务创建新的Activity
,因为业务逻辑已由自定义Fragment
处理。有一个通用的布局:
<FrameLayout .. >
<LinearLayout ..
android:id="@+id/fragment" />
</FrameLayout>
我想创建一个使用它的通用Activity
,并由特定的Fragment
初始化。
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);
}
但我觉得这不是一个好方法。在Fragment
中传递Intent
在我看来有点矫枉过正。所有这些序列化都很昂贵。我可以通过课程名称..还是有更好的方法?或者每个(全屏)Activity
我应该有一个Fragment
?谢谢你的提示。
答案 0 :(得分:1)
<强>第一强>
如果方便您,项目不是太大,您可以将一个Activity
用于整个项目。但是如果项目很大并且包含很多Fragment
s,那么将它们划分为不同活动的逻辑顺序会更好。例如,LoginActivity
将表示具有许多Fragment
s的所有唱歌/注册流程。比所有需要LeliFragmentActivity
s
Fragment
<强>第二强>
您不必将Fragment
传递给对方。要在Fragment之间进行通信,最好和最简单的方法是使用intrefaces之类的文档说。
答案 1 :(得分:0)
尝试一下: https://gist.github.com/burnermanx/8e80e160dfba2f758546c037fce5269a
我是根据您的问题提出的,但目前对我而言没有用。