抽象类管理fragment

来源:互联网 发布:关注网站源码 编辑:程序博客网 时间:2024/06/03 16:55
  1. Activity的布局activity_main.xml
<?xml version="1.0" encoding="utf-8"?><FrameLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/fragmentContainer"   //指定布局id    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity"></FrameLayout>
  1. Fragment的布局myfragment.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:background="#ff33"     //为了便于测试,设背景色为红色              android:layout_width="match_parent"              android:layout_height="match_parent"></LinearLayout>
  1. 创建抽象的Activity类管理Fragment
public abstract class SingleFragmentActivity extends FragmentActivity {    protected abstract Fragment createFragment();    @Override    public void onCreate(Bundle savedInstanceState) {        Log.d("test", "SingleFragmentActivity onCreate()");        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        FragmentManager fm = getSupportFragmentManager();        Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);        if (fragment == null) {            fragment = createFragment();            fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();        }    }}
  1. MainActivity类
public class MainActivity extends SingleFragmentActivity {    @Override    protected Fragment createFragment() {        Log.d("test","MainActivity createFragment() before");        MyFragment myFragment = new MyFragment();        Log.d("test","MainActivity createFragment() after");        return myFragment;    }}
  1. MyFragment类
public class MyFragment extends Fragment{    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        Log.d("test", "MyFragment onCreateView()");        return inflater.inflate(R.layout.myfragment,container,false);    }}

执行顺序:
SingleFragmentActivity onCreate()
MainActivity createFragment() before
MainActivity createFragment() after
MyFragment onCreateView()

0 0
原创粉丝点击