import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news_articles);
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
HeadlinesFragment firstFragment = new HeadlinesFragment();
firstFragment.setArguments(getIntent().getExtras());
// Add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
}
}
}
add()的第一个参数是fragment要放入的ViewGroup, 由resource ID指定,第二个参数是需要添加的fragment.一旦用FragmentTransaction做了改变,为了使改变生效,必须调用commit().
PS
现在再来说明另外一个实例,实例图如下,我要在四个标签页面切换(主页,手机,配件,购物车)

代码如下,具体就是通过影藏和显示fragment来实现切换
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.Window;
public class FramentMainActivity extends FragmentActivity {
private Fragment[] fragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_frament_main);
fragments = new Fragment[4];
fragments[0] = getSupportFragmentManager().findFragmentById(R.id.farment_main);
fragments[1] = getSupportFragmentManager().findFragmentById(R.id.farment_phone);
fragments[2] = getSupportFragmentManager().findFragmentById(R.id.farment_accessory);
fragments[3] = getSupportFragmentManager().findFragmentById(R.id.farment_cart);
getSupportFragmentManager().beginTransaction().
hide(fragments[1]).hide(fragments[2]).hide(fragments[3]).show(fragments[0]).commit();
}
public void mainClick(View view){
getSupportFragmentManager().beginTransaction().hide(fragments[1]).hide(fragments[2]).hide(fragments[3]).show(fragments[0]).commit();
}
public void phoneClick(View view){
getSupportFragmentManager().beginTransaction().hide(fragments[0]).hide(fragments[2]).hide(fragments[3]).show(fragments[1]).commit();
}
public void accessoryClick(View view){
getSupportFragmentManager().beginTransaction().hide(fragments[0]).hide(fragments[1]).hide(fragments[3]).show(fragments[2]).commit();
}
public void cartClick(View view){
getSupportFragmentManager().beginTransaction().hide(fragments[0]).hide(fragments[1]).hide(fragments[2]).show(fragments[3]).commit();
}
}
3、Frament 管理
要管理 fragment,需使用 FragmentManager,要获取它,需在 activity 中调用方法 getFragmentManager()。 可以用 FragmentManager 来做以上事情:
使用方法 findFragmentById()或 findFragmentByTag(),获取 activity 中已存在的 fragment
使用方法 popBackStack()从 activity 的后退栈中弹出 fragment(这可以模拟后退键引发的动作)
用方法 addOnBackStackChangedListerner()注册一个侦听器以监视后退栈的变化
还可以使用 FragmentManager 打开一个 FragmentTransaction 来执行 fragment 的事务,比如添加或删除 fragment。
在 activity 中使用 fragment 的一个伟大的好处