Страница 1 из 1

Скользящий таб

Добавлено: 16 июл 2014, 00:55
Ramik05
Всем привет! У меня такая проблема, создаю проект со скользящим табом. Все хорошо переключается таб , но содержимое не отображает табов. Уже в в один в один копирую готовый пример табов скользящих просто убей не идет, а пример готовый запускается нормально, то есть элементы отображаются в лояут

Код: Выделить всё


package ru.zun_android;

import java.util.ArrayList;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;
import android.widget.TabWidget;

public class MainActivity extends FragmentActivity {

	private TabHost mTabHost;
	private ViewPager mViewPager;
	private TabsAdapter mTabsAdapter;

	@Override
	public void onCreate(final Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mTabHost = (TabHost) findViewById(android.R.id.tabhost);
		mTabHost.setup();

		mViewPager = (ViewPager) findViewById(R.id.pager);

		mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager);

		mTabsAdapter.addTab(mTabHost.newTabSpec("simple").setIndicator("Вычисление"), AndroidFragment.class, null);
		mTabsAdapter.addTab(mTabHost.newTabSpec("throttle").setIndicator("Результат"), DOSFragment.class, null);

		if (savedInstanceState != null) {
			mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
		}
	}

	public static class TabsAdapter extends FragmentPagerAdapter implements TabHost.OnTabChangeListener,
			ViewPager.OnPageChangeListener {
		private final Context mContext;
		private final TabHost mTabHost;
		private final ViewPager mViewPager;
		private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

		static final class TabInfo {
			private final String tag;
			private final Class<?> clss;
			private final Bundle args;

			TabInfo(final String _tag, final Class<?> _class, final Bundle _args) {
				tag = _tag;
				clss = _class;
				args = _args;
			}

			public String getTag() {
				return tag;
			}
		}

		static class DummyTabFactory implements TabHost.TabContentFactory {
			private final Context mContext;

			public DummyTabFactory(final Context context) {
				mContext = context;
			}

			@Override
			public View createTabContent(final String tag) {
				View v = new View(mContext);
				v.setMinimumWidth(0);
				v.setMinimumHeight(0);
				return v;
			}
		}

		public TabsAdapter(final FragmentActivity activity, final TabHost tabHost, final ViewPager pager) {
			super(activity.getSupportFragmentManager());
			mContext = activity;
			mTabHost = tabHost;
			mViewPager = pager;
			mTabHost.setOnTabChangedListener(this);
			mViewPager.setAdapter(this);
			mViewPager.setOnPageChangeListener(this);
		}

		public void addTab(final TabHost.TabSpec tabSpec, final Class<?> clss, final Bundle args) {
			tabSpec.setContent(new DummyTabFactory(mContext));
			String tag = tabSpec.getTag();

			TabInfo info = new TabInfo(tag, clss, args);
			mTabs.add(info);
			mTabHost.addTab(tabSpec);
			notifyDataSetChanged();
		}

		@Override
		public int getCount() {
			return mTabs.size();
		}

		@Override
		public Fragment getItem(final int position) {
			TabInfo info = mTabs.get(position);
			return Fragment.instantiate(mContext, info.clss.getName(), info.args);
		}

		@Override
		public void onTabChanged(final String tabId) {
			int position = mTabHost.getCurrentTab();
			mViewPager.setCurrentItem(position);
		}

		@Override
		public void onPageScrolled(final int position, final float positionOffset, final int positionOffsetPixels) {
		}

		@Override
		public void onPageSelected(final int position) {
			// Unfortunately when TabHost changes the current tab, it kindly
			// also takes care of putting focus on it when not in touch mode.
			// The jerk.
			// This hack tries to prevent this from pulling focus out of our
			// ViewPager.
			TabWidget widget = mTabHost.getTabWidget();
			int oldFocusability = widget.getDescendantFocusability();
			widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
			mTabHost.setCurrentTab(position);
			widget.setDescendantFocusability(oldFocusability);
		}

		@Override
		public void onPageScrollStateChanged(final int state) {
		}
	}

}





Помогите разобраться в этом проекте что не так делаю

Re: Скользящий таб

Добавлено: 19 июл 2014, 14:22
Ramik05
Преобразовал код примера из eclipse в Android Studio и немного изменил. Но при запуске проекта , проект запускается на планшете и закрывается приложение с выводом окошки "приложение остановлено!" В логе выдает в это
  • 07-19 14:02:59.711 6328-6328/ru.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment ru.app.tab1_1: make sure class name exists, is public, and has an empty constructor that is public
    at android.support.v4.app.Fragment.instantiate(Fragment.java:417)
    at ru.app.MainActivity$TabsAdapter.getItem(MainActivity.java:137)
    at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
    at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:982)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
    at android.view.View.measure(View.java:15479)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
    at android.view.View.measure(View.java:15479)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:15479)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:15479)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
    at android.view.View.measure(View.java:15479)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2359)
    at android.view.View.measure(View.java:15479)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1968)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1214)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1387)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4454)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
    at android.view.Choreographer.doCallbacks(Choreographer.java:555)
    at android.view.Choreographer.doFrame(Choreographer.java:525)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4895)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.IllegalAccessException: access to class not allowed
    at java.lang.Class.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1319)
    at android.support.v4.app.Fragment.instantiate(Fragment.java:402)
                at ru.app.MainActivity$TabsAdapter.getItem(MainActivity.java:137)
                at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
                at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)
                at android.support.v4.view.ViewPager.populate(ViewPager.java:982)
                at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
                at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
                at android.view.View.measure(View.java:15479)
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
                at android.view.View.measure(View.java:15479)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                at android.view.View.measure(View.java:15479)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                at android.view.View.measure(View.java:15479)
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
                at android.view.View.measure(View.java:15479)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2359)
                at android.view.View.measure(View.java:15479)
                at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1968)
                at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1214)
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1387)
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4454)
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
                at android.view.Choreographer.doCallbacks(Choreographer.java:555)
                at android.view.Choreographer.doFrame(Choreographer.java:525)
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
                at android.os.Handler.handleCallback(Handler.java:615)
                at android.os.Handler.dispatchMessage(Handler.java:92)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:4895)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
                at dalvik.system.NativeStart.main(Native Method)
    07-19 15:00:36.430 7176-7176/ru.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment ru.app.tab1_1: make sure class name exists, is public, and has an empty constructor that is public
    at android.support.v4.app.Fragment.instantiate(Fragment.java:417)
    at ru.app.MainActivity$TabsAdapter.getItem(MainActivity.java:137)
    at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
    at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:982)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
    at android.view.View.measure(View.java:15479)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
    at android.view.View.measure(View.java:15479)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:15479)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:15479)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
    at android.view.View.measure(View.java:15479)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2359)
    at android.view.View.measure(View.java:15479)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1968)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1214)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1387)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4454)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
    at android.view.Choreographer.doCallbacks(Choreographer.java:555)
    at android.view.Choreographer.doFrame(Choreographer.java:525)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4895)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.IllegalAccessException: access to class not allowed
    at java.lang.Class.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1319)
    at android.support.v4.app.Fragment.instantiate(Fragment.java:402)
                at ru.app.MainActivity$TabsAdapter.getItem(MainActivity.java:137)
                at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
                at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)
                at android.support.v4.view.ViewPager.populate(ViewPager.java:982)
                at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
                at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
                at android.view.View.measure(View.java:15479)
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
                at android.view.View.measure(View.java:15479)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                at android.view.View.measure(View.java:15479)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                at android.view.View.measure(View.java:15479)
                at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
                at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
                at android.view.View.measure(View.java:15479)
                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4826)
                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2359)
                at android.view.View.measure(View.java:15479)
                at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1968)
                at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1214)
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1387)
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4454)
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
                at android.view.Choreographer.doCallbacks(Choreographer.java:555)
                at android.view.Choreographer.doFrame(Choreographer.java:525)
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
                at android.os.Handler.handleCallback(Handler.java:615)
                at android.os.Handler.dispatchMessage(Handler.java:92)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:4895)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
                at dalvik.system.NativeStart.main(Native Method)
не могу разобраться в чем проблема, вроде бы все сделал как в примере