【问题标题】:bottom tab bar with 4 tabs connect with another activity has two fragments and each tab control one fragment带有 4 个选项卡的底部选项卡栏与另一个活动连接有两个片段,每个选项卡控制一个片段
【发布时间】:2015-03-06 06:43:45
【问题描述】:

我在 Activity 中有四个底部标签栏,其中一个标签将导航到另一个 Activity 。这个Activity有2个Fragment,当我点击应用停止的(Activity有2个Fragments)的选项卡时,四个选项卡中的每一个控制一个Fragment

任何帮助请提前感谢

【问题讨论】:

  • 错误信息是什么。
  • 没有消息错误,但是当尝试按下包含 2 个片段的活动的选项卡时,应用程序崩溃了
  • 每个活动当我尝试运行它时,它运行良好,但是当连接两个活动时,出现问题

标签: android android-fragments tabs


【解决方案1】:

public class MainActionbarActivity extends TabActivity {

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

        // Your Tab Titles
        String tab_title[] = { "", "", "","" };

        // Your Tab Drawables for their states
        int tab_drawables[] = { R.drawable. tab_location_custom,
                R.drawable.tab_network_custom, R.drawable.tab_editprofile_custom,
                R.drawable.tab_home_custom };

        // Your Tab Activities
        Object tab_act[] = { PatientTrackingActivity.class, SocialNetworkActivity.class, EditProfileActivity.class, Homepage.class };

        // / TabHost setup
        final TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
        tabHost.setup();

        TabSpec tab_spec;

        for (int i = 0; i < tab_act.length; i++) {
            tab_spec = tabHost.newTabSpec(tab_title[i]);
            tab_spec.setIndicator(tab_title[i],
                    getResources().getDrawable(tab_drawables[i]));
            tab_spec.setContent(new Intent(this, (Class<?>) tab_act[i]));
            tabHost.addTab(tab_spec);
        }
        tabHost.setCurrentTab(0);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            MainActionbarActivity.this.finish();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }


}

package com.example.meme.interactivecarealzh;

import android.app.Activity;

/**
 * Created by meme on 05/03/15.
 */
import   android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
public class SocialNetworkActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActionBar actionBar = getActionBar();

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        String label1 = getResources().getString(R.string.label1);
        Tab tab = actionBar.newTab();
        tab.setText(label1);
        TabListener<AllEventDisplay> tl = new TabListener<AllEventDisplay>(this,
                label1, AllEventDisplay.class);
        tab.setTabListener(tl);
        actionBar.addTab(tab);

        String label2 = getResources().getString(R.string.label2);
        tab = actionBar.newTab();
        tab.setText(label2);
        TabListener<AllConsulteDisplay> tl2 = new TabListener<AllConsulteDisplay>(this,
                label2, AllConsulteDisplay.class);
        tab.setTabListener(tl2);
        actionBar.addTab(tab);

    }

    private class TabListener<T extends Fragment> implements
            ActionBar.TabListener {
        private Fragment mFragment;
        private final Activity mActivity;
        private final String mTag;
        private final Class<T> mClass;

        /**
         * Constructor used each time a new tab is created.
         *
         * @param activity
         *            The host Activity, used to instantiate the fragment
         * @param tag
         *            The identifier tag for the fragment
         * @param clz
         *            The fragment's Class, used to instantiate the fragment
         */
        public TabListener(Activity activity, String tag, Class<T> clz) {
            mActivity = activity;
            mTag = tag;
            mClass = clz;
        }

        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            // Check if the fragment is already initialized
            if (mFragment == null) {
                // If not, instantiate and add it to the activity
                mFragment = Fragment.instantiate(mActivity, mClass.getName());
                ft.add(android.R.id.content, mFragment, mTag);
            } else {
                // If it exists, simply attach it in order to show it
                ft.attach(mFragment);
            }
        }

        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            if (mFragment != null) {
                // Detach the fragment, because another one is being attached
                ft.detach(mFragment);
            }
        }

        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // User selected the already selected tab. Usually do nothing.
        }
    }

}

【讨论】:

    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多