简体   繁体   English

如何在Android Studio 1.5.x中使用选项卡式活动?

[英]How to use tabbed activity in android studio 1.5.x?

I have two fragments and want to show them as tab view.But Don"t know where to add those in the below code. These are the code when you select "tabbed activity" in android studio project. 我有两个片段,希望将它们显示为选项卡视图。但是不知道在下面的代码中将其添加到何处。这些是在android studio项目中选择“选项卡式活动”时的代码。

public class MainActivity extends AppCompatActivity {

/**
 * The {@link android.support.v4.view.PagerAdapter} that will provide
 * fragments for each of the sections. We use a
 * {@link FragmentPagerAdapter} derivative, which will keep every
 * loaded fragment in memory. If this becomes too memory intensive, it
 * may be best to switch to a
 * {@link android.support.v4.app.FragmentStatePagerAdapter}.
 */
private SectionsPagerAdapter mSectionsPagerAdapter;

/**
 * The {@link ViewPager} that will host the section contents.
 */
private ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    // Create the adapter that will return a fragment for each of the three
    // primary sections of the activity.
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.container);
    mViewPager.setAdapter(mSectionsPagerAdapter);


    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceholderFragment() {
    }

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static PlaceholderFragment newInstance(int sectionNumber) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        TextView textView = (TextView) rootView.findViewById(R.id.section_label);
        textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
        return rootView;
    }
}

/**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the sections/tabs/pages.
 */
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        return PlaceholderFragment.newInstance(position + 1);
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 2;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "Demo";
            case 1:
                return "SECTION 2";

        }
        return null;
    }
}

} }

Fragment class 片段类

       public class Fragment1 extends Fragment {



public static Fragment1 newInstance() {
    Fragment1 fragment = (Fragment1) new Fragment();
    return fragment;
}
public Fragment1() {
}
Button ClickMe;
TextView tv;



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment1, container, false);
    ClickMe = (Button) rootView.findViewById(R.id.button);
    tv = (TextView) rootView.findViewById(R.id.textView2);



ClickMe.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if(tv.getText().toString().contains("Hello")){
            tv.setText("Hi");
        }else tv.setText("Hello");
    }
});
    return rootView;
}

} // This is the end of our Fragment1 Class } //这是我们Fragment1类的结尾

This is the place where you need to get your fragment to the specific tab respectively. 在这里,您需要将片段分别移到特定选项卡。

@Override
public Fragment getItem(int position) {
    // getItem is called to instantiate the fragment for the given page.
    // Return a PlaceholderFragment (defined as a static inner class below).
    return PlaceholderFragment.newInstance(position + 1);
}

Use a switch case statement for the choosen position and get the fragment in tab. 使用switch case语句选择位置,然后在选项卡中获取片段。

switch (position) {
    case 0:
        // first fragment activity
        return new firstfragment();
    case 1:
        // second fragment activity
        return new secondFragment();
    case 2:
        // third fragment activity
        return new thirdFragment();
    }

    return null;
}
         public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).

        switch (position) {
            case 0:
                Fragment1 tab1 = new Fragment1();
                return tab1;
            case 1:
                Fragment2 tab2 = new Fragment2();
                return tab2;
            // return PlaceholderFragment.newInstance(position + 1);
        }
        return null;
    }

Just changed the above code like this and in Fragment1 extends public class Fragment1 extends android.support.v4.app.Fragment 只是更改了上面的代码,并在Fragment1中扩展了公共类Fragment1扩展了android.support.v4.app.Fragment

First you have to specify how many tabs you are going to use with getCount() method: 首先,您必须指定要与getCount()方法一起使用的选项卡:

@Override
public int getCount() {
    int numberOfTabs = 3;
    return numberOfTabs;
}

Then, you have to create your fragments your own and add them in getItem(int position) method like this: 然后,您必须创建自己的片段,并将其添加到getItem(int position)方法中,如下所示:

   @Override
   public Fragment getItem(int position) 
          switch(position){
                case 0:
                    return new YourFirstFragment();
                case 1:
                    return new YourSecondFragment();
                case 2:
                    return new YourThirdFragment();
                default:
                    return new SomeFragment();
          } 
   }

Then you will change the tab names using getPageTitle(int position) method like this: 然后,您将使用getPageTitle(int position)方法更改选项卡名称,如下所示:

    @Override
    public CharSequence getPageTitle(int position) 
              switch(position){
                    case 0:
                        return "First";
                    case 1:
                        return "Second";
                    case 2:
                        return "Third";
                    default:
                        return "Some";
              } 
     }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM