Android:在可滑动标签布局中切换活动

时间:2013-10-31 08:15:30

标签: java android tabs

在我的Android应用程序中,有一个可滑动的标签布局。它有两个选项卡:New Complain和Previous Complains。单击“投诉”选项卡时,我需要启动NewComplain.java。这是我的NewComplain类代码段:

NewComplain

 public class NewComplain extends SherlockFragmentActivity implements View.OnClickListener {
    private int Year;
    private int Month;
    private int Day;
    private static final int DATE_DIALOG_ID = 1;
    private View viewLoad;
    private TextView heading, date;
    private Spinner spiComplain, spiProduct;
    private EditText description, contInfo;
    private Button btnDate;
    private ArrayAdapter<String> complainAdapter, prodAdapter;
    private ArrayList<String> lstComplain = new ArrayList<String>();
    private ArrayList<String> lstProdNames = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        viewLoad = LayoutInflater.from(NewComplain.this).inflate(
                R.layout.new_complain, null);
        setContentView(viewLoad);                       
    }
}

此ID为 TabsPagerAdapter 类。

 package xont.virtusel.v4.controller.sale;

    import android.content.Intent;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;

    public class TabsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:

        case 1:

        }

        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 2;
    }

}

这是我的主要活动类。

 package xont.virtusel.v4.controller.sale;

    import xont.virtusel.v4.controller.R;
    import android.app.ActionBar;
    import android.app.ActionBar.Tab;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.view.ViewPager;

    public class CustomerComplainActivity extends FragmentActivity implements ActionBar.TabListener {

    private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private ActionBar actionBar;
    private String[] tabs = { "New Complain", "Previous Complains" };

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

        // Initialization
        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

        viewPager.setAdapter(mAdapter);
        actionBar.setDisplayHomeAsUpEnabled(true);
        //actionBar.setHomeButtonEnabled(true);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        //actionBar.setDisplayShowHomeEnabled(false);
        //actionBar.setDisplayShowTitleEnabled(false);

        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }

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

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
    }

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

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // on tab selected
        // show respected fragment view
        viewPager.setCurrentItem(tab.getPosition());
    }

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

}

如何将切换活动语句添加到此TabsPagerAdapter类中。我用过意图。但它没有奏效。 任何人都可以如此友好地澄清这个问题。 Thanx提前

2 个答案:

答案 0 :(得分:1)

你的问题究竟是什么?

如果您无法启动新的Fragment,请尝试以下操作: 在public Fragment getItem()方法

中的 TabsPagerAdapter
@Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:
            return new NewComplain();
        case 1:
            //return some other class
        }

        return null;
    }

并为NewComplain class

创建一个构造函数

答案 1 :(得分:0)

您正在添加片段,而不是活动。在Tab监听器中,您将获得一个FragmentTransaction,您应该使用它来更新哪些片段相对于按下的选项卡显示。

另外,不要在创建片段中充气,在创建视图时执行此操作。