Android 如何在一个片段中控制两个布局?

Android 如何在一个片段中控制两个布局?,android,android-fragments,Android,Android Fragments,我有一些片段,我想通过按钮在一个片段中控制两个不同的布局。默认情况下,我希望看到第一个布局,单击按钮将视图更改为第二个布局,然后单击相同的按钮或其他按钮将视图再次更改为第一个布局。 这是我的片段: public class HistoryActivity extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,

我有一些片段,我想通过按钮在一个片段中控制两个不同的布局。默认情况下,我希望看到第一个布局,单击按钮将视图更改为第二个布局,然后单击相同的按钮或其他按钮将视图再次更改为第一个布局。 这是我的片段:

public class HistoryActivity extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_history,
            container, false);

    Button btn1 = (Button) rootView.findViewById(R.id.button);
    btn1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            //what to place here
        }
    });

    Button btn2 = (Button) rootView.findViewById(R.id.button2);
    btn2.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            //what to place here
        }
    });


    return rootView;
}





}    
这是我的主要观点:

public class MainActivity extends FragmentActivity implements TabListener {




private ActionBar actionbar;
private ViewPager viewpager;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    viewpager = (ViewPager) findViewById(R.id.pager);
    viewpager.setAdapter(new MyAdapter(getSupportFragmentManager()));
    viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {

            actionbar.setSelectedNavigationItem(arg0);


        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {


        }

        @Override
        public void onPageScrollStateChanged(int arg0) {


        }
    });
    actionbar = getActionBar();
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    //Tab1
    ActionBar.Tab first = actionbar.newTab();
    first.setText(getString(R.string.first));
    first.setTabListener(this);
    //Tab2
    ActionBar.Tab second = actionbar.newTab();
    second.setText(getString(R.string.second));
    second.setTabListener(this);
    //Tab3
    ActionBar.Tab third = actionbar.newTab();
    third.setText(getString(R.string.third));
    third.setTabListener(this);
    //Tab4
    ActionBar.Tab fourth = actionbar.newTab();
    fourth.setText(getString(R.string.fourth));
    fourth.setTabListener(this);

    actionbar.addTab(first);
    actionbar.addTab(second);
    actionbar.addTab(third);
    actionbar.addTab(fourth);
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    viewpager.setCurrentItem(tab.getPosition());

}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {


}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {


}


}
//Tab Adapter

class MyAdapter extends FragmentPagerAdapter {

public MyAdapter(FragmentManager fm) {
    super(fm);


}

@Override
public Fragment getItem(int arg0) {
     //TODO Auto-generated method stub
    Fragment fragment = null;
    if(arg0==0){
        fragment = new FirstTab();
    }
    if(arg0==1){
        fragment = new SecondTab();
    }
    if(arg0==2){
        fragment = new ThirdTab();
    }
    if(arg0==3){
        fragment = new FourthTab();
    }

    return fragment;
}


@Override
public int getCount() {
    return 4;
}


}

在片段的布局中包括这两个布局,并根据需要将可见性设置为
View.VISIBLE
View.GONE

编辑:添加一些伪代码

在布局中,您需要一个框架布局,其中包含两个要在其中切换的布局

<LinearLayout>
    <FrameLayout>
        <LinearLayout android:id="@+id/layout1" />
        <LinearLayout android:id="@+id/layout2" />
    </FrameLayout>
    <LinearLayout> <!-- put buttons here --> </LinearLayout>
</LinearLayout>
并显示正确的屏幕:

private void renderScreen() {
    mLayout1.setVisibility(mScreen == SCREEN1 ? View.VISIBLE : View.GONE);
    mLayout2.setVisibility(mScreen == SCREEN2 ? View.VISIBLE : View.GONE);
}

在片段的布局中包括这两个布局,并根据需要将可见性设置为
View.VISIBLE
View.GONE

编辑:添加一些伪代码

在布局中,您需要一个框架布局,其中包含两个要在其中切换的布局

<LinearLayout>
    <FrameLayout>
        <LinearLayout android:id="@+id/layout1" />
        <LinearLayout android:id="@+id/layout2" />
    </FrameLayout>
    <LinearLayout> <!-- put buttons here --> </LinearLayout>
</LinearLayout>
并显示正确的屏幕:

private void renderScreen() {
    mLayout1.setVisibility(mScreen == SCREEN1 ? View.VISIBLE : View.GONE);
    mLayout2.setVisibility(mScreen == SCREEN2 ? View.VISIBLE : View.GONE);
}

在片段的布局中包括这两个布局,并根据需要将可见性设置为
View.VISIBLE
View.GONE

编辑:添加一些伪代码

在布局中,您需要一个框架布局,其中包含两个要在其中切换的布局

<LinearLayout>
    <FrameLayout>
        <LinearLayout android:id="@+id/layout1" />
        <LinearLayout android:id="@+id/layout2" />
    </FrameLayout>
    <LinearLayout> <!-- put buttons here --> </LinearLayout>
</LinearLayout>
并显示正确的屏幕:

private void renderScreen() {
    mLayout1.setVisibility(mScreen == SCREEN1 ? View.VISIBLE : View.GONE);
    mLayout2.setVisibility(mScreen == SCREEN2 ? View.VISIBLE : View.GONE);
}

在片段的布局中包括这两个布局,并根据需要将可见性设置为
View.VISIBLE
View.GONE

编辑:添加一些伪代码

在布局中,您需要一个框架布局,其中包含两个要在其中切换的布局

<LinearLayout>
    <FrameLayout>
        <LinearLayout android:id="@+id/layout1" />
        <LinearLayout android:id="@+id/layout2" />
    </FrameLayout>
    <LinearLayout> <!-- put buttons here --> </LinearLayout>
</LinearLayout>
并显示正确的屏幕:

private void renderScreen() {
    mLayout1.setVisibility(mScreen == SCREEN1 ? View.VISIBLE : View.GONE);
    mLayout2.setVisibility(mScreen == SCREEN2 ? View.VISIBLE : View.GONE);
}

嗯…,你能给我一个例子代码吗?谢谢:)嗯…,你能给我一个例子代码吗?谢谢:)嗯…,你能给我一个例子代码吗?谢谢:)嗯…,你能给我一个例子代码吗?谢谢:)