Fragment容器Activity
2017-03-14 00:00
99 查看
//file NoteListActivity package jp.co.ricoh.melody.views.activities; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import junit.framework.Test; import jp.co.ricoh.melody.R; import jp.co.ricoh.melody.databinding.NoteListActivityBinding; import jp.co.ricoh.melody.presenters.INoteListActivityPresenter; import jp.co.ricoh.melody.presenters.NoteActivityPresenter; import jp.co.ricoh.melody.presenters.NoteListActivityPresenter; import jp.co.ricoh.melody.views.fragments.NoteListFragment; import static android.R.attr.fragment; /** * Created by leonard on 17-3-11. */ public class NoteListActivity extends BaseActivity implements NoteActivityPresenter { private NoteListActivityBinding mViewDataBinding; private INoteListActivityPresenter mActivityPresenter; private Fragment mCurrentFragment; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(savedInstanceState); } /* this contain all note functions. * content layout contain note list layout,note item layout,layout item edit * back key will change in fragemnt backstack * */ private void initView(Bundle savedInstanceState) { mViewDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_note); mActivityPresenter = NoteListActivityPresenter.newInstance(); if (savedInstanceState==null) { Fragment fragment = NoteListFragment.newInstance(); switchContent(fragment,true); } } @Override public void switchContent(Fragment newFragemnt, boolean reuse) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction().setCustomAnimations( android.R.anim.fade_in, android.R.anim.fade_out); if (reuse){ newFragemnt = getSupportFragmentManager().findFragmentByTag(newFragemnt.getTag()); } if (!newFragemnt.isAdded()) { // 先判断是否被add过 transaction.hide(mCurrentFragment).add(R.id.contentFrame, newFragemnt).commitAllowingStateLoss(); // 隐藏当前的fragment,add下一个到Activity中 } else { transaction.hide(mCurrentFragment).show(newFragemnt).commitAllowingStateLoss(); // 隐藏当前的fragment,显示下一个 } mCurrentFragment = newFragemnt; } @Override public void setTitle(String title) { mViewDataBinding.toolbar.setTitle(R.string.app_name); } } //file NoteActivityPresenter package jp.co.ricoh.melody.presenters; import android.support.v4.app.Fragment; /** * Created by leonard on 17-3-13. */ public interface NoteActivityPresenter { void switchContent(Fragment newFragemnt, boole 7fe0 an reuse); void setTitle(String title); } //res activity_note <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <data class="NoteListActivityBinding"/> <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/content_main" android:id="@+id/content" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_width="match_parent"/> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:fitsSystemWindows="true" android:layout_height="?attr/actionBarSize"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content"></android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> </layout> //res content_main <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2016 RICOH Co.,LTD. --> <!-- All rights reserved. --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <FrameLayout android:id="@+id/contentFrame" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> </RelativeLayout>
相关文章推荐
- Android FragmentActivity onActivityResult冲突问题
- Android中Fragment中启动一个Activity,实例化控件。
- Fragment与Activity的交互
- android fragment getActivity()为空的另一个可能
- ActionBarActivity & FragmentActivity
- activity添加ScrollView后或外部容器为RelativeLayout时onFling不起作用,无法滑动问题
- 王学岗Fragment(六)——Activity与fragment之间数据的传递
- Activity 和Fragment 两个之间的跳转方法
- Android Fragment startActivityForResult没有调用onActivityResult
- Android Fragment onActivityResult不执行解决办法
- Activity和Fragment生命周期
- Activity、Fragment对象内存泄漏的解决思路
- Activity,Fragment,Service的生命周期总结
- Android的Activity与Fragment之二 Activity的回调机制、生命周期、加载模式
- 基础篇(十) Fragment和Activity
- Activity/Fragment生命周期变化
- activity has been destroyed ,使用 fragment时
- Andriod Fragment---给Activity添加一个Fragment
- Android:Activity+Fragment及它们之间的数据交换(一)
- Activity和Fragment相互通信或者改变UI