【问题标题】:How to create intent in a TabActivity如何在 TabActivity 中创建意图
【发布时间】:2014-02-06 15:50:37
【问题描述】:

使用Android Studio,我开始了一个基于默认ActionBar Tab + Swipe Views 的新项目,但现在我希望能够在我为选项卡布局创建的类中创建Intents,但Button 没有响应我点击。你知道为什么吗? 这里有一些代码:

public class MainActivity extends FragmentActivity implements
ActionBar.TabListener, android.app.ActionBar.TabListener {
CollectionPagerAdapter mCollectionPagerAdapter;
ViewPager mViewPager;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mCollectionPagerAdapter = new CollectionPagerAdapter(
        getSupportFragmentManager());

final android.app.ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setStackedBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.tab_color)));
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mCollectionPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

            @Override

            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }

        });
for (int i = 0; i < mCollectionPagerAdapter.getCount(); i++) {
    actionBar.addTab(actionBar.newTab()
            .setText(mCollectionPagerAdapter.getPageTitle(i))
            .setTabListener(this));

}

      }

      public void onTabUnselected(ActionBar.Tab tab,
                        FragmentTransaction fragmentTransaction) {

       }

    public void onTabSelected(ActionBar.Tab tab,
                      FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());

     }

     public void onTabReselected(ActionBar.Tab tab,
                        FragmentTransaction fragmentTransaction) {

       }

       @Override
     public void onTabSelected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());

   }

      @Override
    public void onTabUnselected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) {

       }

      @Override
     public void onTabReselected(android.app.ActionBar.Tab tab, android.app.FragmentTransaction ft) {

       }

  public class CollectionPagerAdapter extends FragmentPagerAdapter {

final int NUM_ITEMS = 11; // number of tabs

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

}

@Override

public Fragment getItem(int i) {
    Fragment fragment = new TabFragment();
    Bundle args = new Bundle();
    args.putInt(TabFragment.ARG_OBJECT, i);
    fragment.setArguments(args);
    return fragment;

}

@Override
public int getCount() {

    return NUM_ITEMS;

}

@Override
public CharSequence getPageTitle(int position) {
    String tabLabel = null;
    switch (position) {
        case 0:
            tabLabel = getString(R.string.label1);
            break;
        case 1:
            tabLabel = getString(R.string.label2);
            break;
        case 2:
            tabLabel = getString(R.string.label3);
            break;
        case 3:
            tabLabel = getString(R.string.label4);
            break;
        case 4:
            tabLabel = getString(R.string.label5);
            break;
        case 5:
            tabLabel = getString(R.string.label6);
            break;
        case 6:
            tabLabel = getString(R.string.label7);
            break;
        case 7:
            tabLabel = getString(R.string.label8);
            break;
        case 8:
            tabLabel = getString(R.string.label9);
            break;
        case 9:
            tabLabel = getString(R.string.label10);
            break;
        case 10:
            tabLabel = getString(R.string.label11);
            break;


    }

    return tabLabel;

}
}

public static class TabFragment extends Fragment {
public static final String ARG_OBJECT = "object";

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

    Bundle args = getArguments();
    int position = args.getInt(ARG_OBJECT);
    int tabLayout = 0;
    switch (position) {
        case 0:
            tabLayout = R.layout.tab1;
            break;
        case 1:
            tabLayout = R.layout.tab2;
            break;
        case 2:
            tabLayout = R.layout.tab3;
            break;
        case 3:
            tabLayout = R.layout.tab4;
            break;
        case 4:
            tabLayout = R.layout.tab5;
            break;
        case 5:
            tabLayout = R.layout.tab6;
            break;
        case 6:
            tabLayout = R.layout.tab7;
            break;
        case 7:
            tabLayout = R.layout.tab8;
            break;
        case 8:
            tabLayout = R.layout.tab9;
            break;
        case 9:
            tabLayout = R.layout.tab10;
            break;
        case 10:
            tabLayout = R.layout.tab11;
            break;

    }

    View rootView = inflater.inflate(tabLayout, container, false);
    return rootView;

 }

和我的第 5 个标签的班级:

public class Tab5Activity extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.tab5, container, false);

}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    final Button button1 = (Button) getView().findViewById(R.id.btn);
    button1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
          //do something
    });

}

【问题讨论】:

    标签: android button android-intent android-fragments tabs


    【解决方案1】:

    您可以在 onTabSelected 方法中查看标签文本。

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    
        if (tab.getText().equals(getString(R.string.label5) )) {
    
            Intent intent = new Intent(this, Tab5Activity.class);
            startActivity(intent);
    
            return;
        }
        mViewPager.setCurrentItem(tab.getPosition());
    }
    

    【讨论】:

    • 感谢您的回答,但是您知道如何在标签下显示此布局吗?我的意思是当我滑动到第 5 个布局时,它会打开一个可以工作的新活动,但没有更多选项卡。
    • 就像您在 Google Play 应用中看到的一样
    • 你的意思是在你的 FragmentActivity 下显示 Tab5Activity ?
    • 是的,在 Tab 下执行 tab5Activity 的功能,无需打开没有 Tab 的新活动
    • 您的页面只能从片段扩展。如果您希望您的 Tab5Activity 包含在 ViewPager 中,请从 Fragment 而不是 FragmentActivity 扩展 Tab5Activity。
    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2011-03-11
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多