首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将fragment1切换到fragment2

将fragment1切换到fragment2
EN

Stack Overflow用户
提问于 2014-05-13 01:04:11
回答 1查看 252关注 0票数 1

嗨,伙计们,我有一个带按钮的碎片。当单击按钮时,我希望打开fragment2。什么是最好的解决方案?你能给我举个例子吗?在XML fragment1中:

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="116dp"
        android:background="#0000"
        android:drawableTop="@drawable/autobus"
        android:onClick="OPENFRAGMENT"
        android:text="ooo" />

在fragment1中:

代码语言:javascript
复制
public class Fragment1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

     View info = inflater.inflate(R.layout.info, container, false);

    return info;
}

public void OPENFRAGMENT(View view) 
{

}

在fragment2中:

代码语言:javascript
复制
public class Fragment2 extends Fragment{

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

         View frag = inflater.inflate(R.layout.frag2, container, false);
         return frag;
 }
}

MainActivity:

代码语言:javascript
复制
 public class MainActivity extends SherlockFragmentActivity  {


    ViewPager Tab;
    TabPagerAdapter TabAdapter;
    ActionBar actionBar;
    public boolean StatusConnection = false;
    public int thread = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 


        TabAdapter = new TabPagerAdapter(getSupportFragmentManager()); 
        Tab = (ViewPager)findViewById(R.id.pager); 
        Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

                    @Override
                    public void onPageSelected(int position) {
                        actionBar.setSelectedNavigationItem(
                                position);
                        Tab.setCurrentItem(position);
                    }

                });
        Tab.setAdapter(TabAdapter); 

        actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.TabListener tabListener = new ActionBar.TabListener(){

            @Override
            public void onTabReselected(ActionBar.Tab arg0,FragmentTransaction arg1) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onTabSelected(ActionBar.Tab arg0,FragmentTransaction arg1) {
                // TODO Auto-generated method stub
                Tab.setCurrentItem(arg0.getPosition());
            }
            @Override
            public void onTabUnselected(ActionBar.Tab arg0,FragmentTransaction arg1) {
                // TODO Auto-generated method stub

            }
        }; 

        actionBar.addTab(actionBar.newTab().setText("A").setTabListener(tabListener));
        actionBar.addTab(actionBar.newTab().setText("B").setTabListener(tabListener));
        actionBar.addTab(actionBar.newTab().setText("C").setTabListener(tabListener));

 @Override
    public Fragment getItem(int i) {
        switch (i) {
            case 0:
                return new Info();
            case 1:
                return new B(); 
            case 2:
                return  new  C();

activity_main.xml

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/pager"
  android:layout_width="match_parent"
  android:layout_height="match_parent" />

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-13 01:33:14

首先,必须使用以下代码从第一个片段的按钮中获取视图:

代码语言:javascript
复制
btnChFrag = info.findViewById(R.id.button1);

(info是片段布局的视图)

然后,您需要在该按钮上设置onclicklistener。

代码语言:javascript
复制
btnChFrag.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        Fragment2 newFragment = new Fragment2();
        FragmentTransaction ft = getFragmentManager().beginTransaction(); 
        ft.replace(R.id.container, newFragment); 
        ft.commit();
}

在您的R.id.container视图中使用容器更改MainActivity

所以您在fragment1上的代码将是:

代码语言:javascript
复制
public class Fragment1 extends Fragment {

private Button btnChFrag 

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View info = inflater.inflate(R.layout.info, container, false);
    btnChFrag = info.findViewById(R.id.button1);
    //set button onclicklistener here

    return info;
}

-编辑

对不起,我完全忘了你想用纽扣做这件事,我的错

这是fragment1的代码

代码语言:javascript
复制
public class Fragment1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View info = inflater.inflate(R.layout.info, container, false);


    Button btn1 = (Button)rootView.findViewById(R.id.button1);

    btn1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ((MainActivity)Fragment1.this.getActivity()).Tab.setCurrentItem(2);
        }
    });
    return info;
}

试试看,它起作用了:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23621279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档