Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在主机上添加滑动手势_Android_Swipe Gesture_Fragment Tab Host_Tabcontainer - Fatal编程技术网

Android 如何在主机上添加滑动手势

Android 如何在主机上添加滑动手势,android,swipe-gesture,fragment-tab-host,tabcontainer,Android,Swipe Gesture,Fragment Tab Host,Tabcontainer,我想通过在屏幕上滑动来更改选项卡我正在使用fragment tabhost创建选项卡,但当我在项目中实现滑动功能时,它不会打开每个选项卡中的嵌套片段,这意味着我正在打开每个选项卡中的嵌套子片段 请告诉我这对我很重要 这是我的密码 这是我的主要活动 import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTabHost; impor

我想通过在屏幕上滑动来更改选项卡我正在使用fragment tabhost创建选项卡,但当我在项目中实现滑动功能时,它不会打开每个选项卡中的嵌套片段,这意味着我正在打开每个选项卡中的嵌套子片段

请告诉我这对我很重要

这是我的密码

这是我的主要活动

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TextView;

    public class Home extends FragmentActivity implements OnTabChangeListener,OnPageChangeListener {

        private static final String TAB_1_TAG = "tab_1";
        private static final String TAB_2_TAG = "tab_2";
        private static final String TAB_3_TAG = "tab_3";
        private static final String TAB_4_TAG = "tab_4";
        private static final String TAB_5_TAG = "tab_5";
        private FragmentTabHost mTabHost;
//        ViewPager viewPager;
//        TabsPagerAdapter mAdapter;

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

           viewPager =(ViewPager)findViewById(R.id.viewpager);
            initView();
            mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
            viewPager.setAdapter(mAdapter);
            viewPager.setOnPageChangeListener(Home.this);

        }

        private void initView() {
            mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
            mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

           // mTabHost.addTab(mTabHost.newTabSpec(TAB_1_TAG).setIndicator("Talk", getResources().getDrawable(R.drawable.ic_launcher)), TalkContainerFragment.class, null);
            mTabHost.addTab(mTabHost.newTabSpec(TAB_1_TAG).setIndicator("Talk"), TalkContainerFragment.class, null);
            mTabHost.addTab(mTabHost.newTabSpec(TAB_2_TAG).setIndicator("Map"), Map_fragment.class, null);
//            mTabHost.addTab(mTabHost.newTabSpec(TAB_3_TAG).setIndicator("Go"), GoContainerFragment.class, null);
//            mTabHost.addTab(mTabHost.newTabSpec(TAB_4_TAG).setIndicator("Watch"), WatchContainerFragment.class, null);
//            mTabHost.addTab(mTabHost.newTabSpec(TAB_5_TAG).setIndicator("More"), MoreContainerFragment.class, null);

            /* Increase tab height programatically 
             * tabs.getTabWidget().getChildAt(1).getLayoutParams().height = 150; 
             */

            for (int i = 0; i < mTabHost.getTabWidget().getChildCount(); i++) {
                final TextView tv = (TextView) mTabHost.getTabWidget().getChildAt(i).findViewById(android.R.id.title);
                if (tv == null)
                continue;
                else
                tv.setTextSize(10);

            }

        }

        @Override
        public void onBackPressed() {
            boolean isPopFragment = false;
            String currentTabTag = mTabHost.getCurrentTabTag();
            if (currentTabTag.equals(TAB_1_TAG)) {
                isPopFragment = ((BaseContainerFragment)getSupportFragmentManager().findFragmentByTag(TAB_1_TAG)).popFragment();
            } else if (currentTabTag.equals(TAB_2_TAG)) {
                isPopFragment = ((BaseContainerFragment)getSupportFragmentManager().findFragmentByTag(TAB_2_TAG)).popFragment();
            } else if (currentTabTag.equals(TAB_3_TAG)) {
                isPopFragment = ((BaseContainerFragment)getSupportFragmentManager().findFragmentByTag(TAB_3_TAG)).popFragment();
            } else if (currentTabTag.equals(TAB_4_TAG)) {
                isPopFragment = ((BaseContainerFragment)getSupportFragmentManager().findFragmentByTag(TAB_4_TAG)).popFragment();
            } else if (currentTabTag.equals(TAB_5_TAG)) {
                isPopFragment = ((BaseContainerFragment)getSupportFragmentManager().findFragmentByTag(TAB_5_TAG)).popFragment();
            }
            if (!isPopFragment) {
                finish();
            }
        }

        @Override
        public void onTabChanged(String tabId) {
            // TODO Auto-generated method stub
            int pos = this.mTabHost.getCurrentTab();
            this.viewPager.setCurrentItem(pos);
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub
            int pos = this.viewPager.getCurrentItem();
            this.mTabHost.setCurrentTab(pos);
        }

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub

        }


    } 
为每个选项卡创建容器

  import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

        public class TalkContainerFragment extends BaseContainerFragment {

            private boolean mIsViewInited;

            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                Log.e("test", "tab 1 oncreateview");
                return inflater.inflate(R.layout.container_fragment, null);
            }

            @Override
            public void onActivityCreated(Bundle savedInstanceState) {
                super.onActivityCreated(savedInstanceState);
                Log.e("test", "tab 1 container on activity created");
                if (!mIsViewInited) {
                    mIsViewInited = true;
                    initView();
                }
            }
TAlk.java文件

import java.util.HashSet;
import java.util.Set;

import org.json.JSONObject;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

public class Talk extends Fragment {

    /** Define global variables over here */
    //private ProgressDialog pDialog;
//    StaticApiList sal;
//    TalkModelAll tma;
    JSONObject myJasonObject = null;
    private ListView lv;
//    private ArrayList<TalkModelAll> m_ArrayList = null;
    //ArrayList<String> stringArrayList = new ArrayList<String>();
//    TalkArrayAdapter taa;
    Set<String> uniqueValues = new HashSet<String>();
    TextView rowTextView = null;
    boolean vivek = false;

    int postid;
    String title;
    String thumsrc;
    String largeimg;
    String excert;
    String description;
    String cat;
    String myUrl;
    String jsonString;
    int mCurCheckPosition;
    String check_state = null;
    String ccc;
    LinearLayout myLinearLayout;

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

        View rootView = inflater.inflate(R.layout.talk, null);

        Button btn = (Button) rootView.findViewById(R.id.your_btn_id);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //Here TalkDetail is name of class that needs to open
                TalkDetail talkfragment = new TalkDetail();
                // if U need to pass some data 
                Bundle bundle = new Bundle();
//
//                bundle.putString("title", m_ArrayList.get(arg2).title);
//                bundle.putString("largeimg", m_ArrayList.get(arg2).largeimg);
//                bundle.putString("excert", m_ArrayList.get(arg2).excert);
//                bundle.putString("description", m_ArrayList.get(arg2).description);
//                bundle.putString("cat", m_ArrayList.get(arg2).cat);
//                //bundle.putInt("postid", m_ArrayList.get(arg2).postid);

                talkfragment.setArguments(bundle);
                ((BaseContainerFragment)getParentFragment()).replaceFragment(talkfragment, true);
            }
        });

        return rootView;
    }
}

您必须使用
ViewPager
。阅读更多关于Android开发者的文章。您可以在上找到许多自定义查看寻呼机。这是当前的标准,因此您应该在
TabHost

上使用它。您可以在eclips中查看它的演示。转到 文件->其他->android活动->选项卡式活动

或者从android开发者网站学习view Flipper

package com.example.mystack;
导入java.util.Locale;
导入android.support.v7.app.ActionBarActivity;
导入android.support.v7.app.ActionBar;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.os.Bundle;
导入android.support.v4.view.ViewPager;
导入android.view.Gravity;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.TextView;
公共类MainActivity扩展了ActionBarActivity实现
ActionBar.TabListener{
/**
*将提供的{@link android.support.v4.view.PagerAdapter}
*我们使用{@linkfragmentpageradapter}
*派生,它会将每个加载的片段保存在内存中
*如果内存太大,最好切换到
*{@link android.support.v4.app.FragmentStatePagerAdapter}。
*/
分段SPAGERADAPTER mSectionsPagerAdapter;
/**
*将承载节内容的{@link ViewPager}。
*/
ViewPager mViewPager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置操作栏。
最终ActionBar ActionBar=getSupportActionBar();
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
//创建适配器,该适配器将为这三个函数中的每一个返回一个片段
//活动的主要部分。
mSectionsPagerAdapter=新节spageradapter(
getSupportFragmentManager());
//使用分区适配器设置ViewPager。
mViewPager=(ViewPager)findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
//在不同区段之间滑动时,选择相应的
//我们也可以使用ActionBar.tab#select()来完成这项工作
//对选项卡的引用。
mViewPager
.setOnPageChangeListener(新的ViewPager.SimpleOnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
actionBar.setSelectedNavigationItem(位置);
}
});
//对于应用程序中的每个部分,在操作栏中添加一个选项卡。
对于(int i=0;iimport java.util.HashSet;
import java.util.Set;

import org.json.JSONObject;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

public class Talk extends Fragment {

    /** Define global variables over here */
    //private ProgressDialog pDialog;
//    StaticApiList sal;
//    TalkModelAll tma;
    JSONObject myJasonObject = null;
    private ListView lv;
//    private ArrayList<TalkModelAll> m_ArrayList = null;
    //ArrayList<String> stringArrayList = new ArrayList<String>();
//    TalkArrayAdapter taa;
    Set<String> uniqueValues = new HashSet<String>();
    TextView rowTextView = null;
    boolean vivek = false;

    int postid;
    String title;
    String thumsrc;
    String largeimg;
    String excert;
    String description;
    String cat;
    String myUrl;
    String jsonString;
    int mCurCheckPosition;
    String check_state = null;
    String ccc;
    LinearLayout myLinearLayout;

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

        View rootView = inflater.inflate(R.layout.talk, null);

        Button btn = (Button) rootView.findViewById(R.id.your_btn_id);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //Here TalkDetail is name of class that needs to open
                TalkDetail talkfragment = new TalkDetail();
                // if U need to pass some data 
                Bundle bundle = new Bundle();
//
//                bundle.putString("title", m_ArrayList.get(arg2).title);
//                bundle.putString("largeimg", m_ArrayList.get(arg2).largeimg);
//                bundle.putString("excert", m_ArrayList.get(arg2).excert);
//                bundle.putString("description", m_ArrayList.get(arg2).description);
//                bundle.putString("cat", m_ArrayList.get(arg2).cat);
//                //bundle.putInt("postid", m_ArrayList.get(arg2).postid);

                talkfragment.setArguments(bundle);
                ((BaseContainerFragment)getParentFragment()).replaceFragment(talkfragment, true);
            }
        });

        return rootView;
    }
}
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

public class TalkDetail extends android.support.v4.app.Fragment {

    /* (non-Javadoc)
     * @see android.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view=LayoutInflater.from(getActivity()).inflate(R.layout.activity_talk_detail, null);
        return view;
    }


}