我试图像在示例中一样在片段中添加TabHost,在调用时获取NullPointerException
mTabHost.setup()
可能是什么问题?代码如下
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tabs_layout,container,false);
mTabHost = (FragmentTabHost)rootView.findViewById(android.R.id.tabhost);
mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.tabcontent);
mTabHost.addTab(mTabHost.newTabSpec("fragmentb").setIndicator("tab1"),
Fragment1.class, null);
mTabHost.addTab(mTabHost.newTabSpec("fragmentc").setIndicator("tab2"),
Fragment2.class, null);
return rootView;
}
Run Code Online (Sandbox Code Playgroud)
XML:
<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
Run Code Online (Sandbox Code Playgroud) 我在我的视图中使用谷歌的SlidingTabLayout,但我想在标签中添加图标.我正在使用这个http://developer.android.com/samples/SlidingTabsBasic/src/com.example.android.common/view/SlidingTabLayout.html 任何人都可以帮忙吗?
void setUpPager(View view){
mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
mViewPager.setAdapter(new TabsPagerAdapter(getActivity()));
mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setViewPager(mViewPager);
}
Run Code Online (Sandbox Code Playgroud)
这是我的xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.common.view.SlidingTabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) android android-layout android-tabs pagerslidingtabstrip android-tabstrip
已经问过这个问题(例如,这里使用ViewPager和没有actionBar的Tabs),但是那里的答案不起作用.有一些指向Swipey的链接,但不幸的是链接也被破坏了.
来自Android站点EffectiveNavigation的示例使用Actionbar来托管选项卡片段,所以很明显,如果我设置了.NoActionBar主题,那么就没有主机了.任何不同的方式?谢谢.
更新我想要创建的屏幕截图,在顶部,没有操作栏.
更新2这是来自谷歌的例子,顶部有一个操作栏(标题为"有效导航"),我想摆脱它
我一直在学习使用这篇文章使用Material Design来使用Sliding Tabs .我已成功地实现SlidingTabs 以下的Toolbar
,像这样的:
但现在我想创建ActionBar/ToolBar Fragment选项卡 ......
我正在使用Action bar和fragment构建一个标签界面.我需要帮助将数据从容器活动发送到片段.
详细说来,我在容器活动中有工作对象.我根据工作对象中的信息创建了几个选项卡(如公司详细信息,体验详细信息等).我需要将作业对象传递给这些片段,以便它可以显示相应的信息.
我创建了容器活动和标签片段.我需要一个关于如何跨越它们传递对象的示例.我不能使用intent.putExtra.我可以从片段中访问父容器的对象吗?
任何帮助将不胜感激.
谢谢.
我目前正在尝试使用MapView对象在TabActivity的不同选项卡中使用2个映射v2.问题出现在以下场景中:
在右侧,您可以看到第一张地图仍然显示在它上面.触摸事件将转到新地图,但这并没有真正帮助.我花了很多时间尝试将我们的应用程序转换为使用片段并遇到其他类型的问题.其中一个是http://code.google.com/p/android/issues/detail?id=40035,所以这也不是一个好选择.
到目前为止,我还没有找到任何解决方法.为了轻松尝试各种更改,我编写了一个简单的应用程序,并在此处提供:https://github.com/cristizmf/TestMapsV2.它只需要地图库项目的正确位置和清单中的良好地图键.
任何想法将不胜感激.
稍后修改:我已为此记录了一个问题:https://code.google.com/p/gmaps-api-issues/issues/detail?id = 5027&thanks = 5027&ts = 1362071369
我有2个标签名为tab1(home)和tab2(profile)使用TabPageIndicator
和FragmentPagerAdapter
库.
在tab2中,我有一个名为"登录"的按钮(tab2膨胀abc.xml
).
当用户单击"登录"按钮时,应用程序将在新活动中显示登录表单.登录后,活动结束,tab2的内容视图将更改(它显示用户的个人资料,因为它会膨胀xyz.xml
).我怎样才能做到这一点?
public class MainActivity extends SherlockFragmentActivity {
private static String[] TAB_NAMES = null;
private Context context = this;
private static FragmentPagerAdapter adapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {
if (TAB_NAMES == null) {
TAB_NAMES = new String[] {
getResources().getString(R.string.tab_home),
getResources().getString(R.string.tab_profile) };
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new TabsAdapter(
getSupportFragmentManager());
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(pager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater …
Run Code Online (Sandbox Code Playgroud) 我正在我的应用中实现可滑动的标签.我为此实现了一个演示.以下是我的代码,
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<FrameLayout
android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<FrameLayout
android:id="@+id/tab3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<FrameLayout
android:id="@+id/tab4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
</FrameLayout>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</TabHost>
Run Code Online (Sandbox Code Playgroud)
public class MainActivity extends Activity implements OnTabChangeListener, OnPageChangeListener{
private TabHost host;
private ViewPager pager;
@Override
public void onCreate(Bundle savedInstanceState) { …
Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中仅实现2个固定选项卡.我按照本教程.
在我的TabPagerAdapter
班上,我收到了这个错误:
FragmentPageAdapter
在android.support.v4.app.FragmentPagerAdapter
无法应用android.app.FragmentManager
TabPageAdapter类:
package com.nikhil.tabs;
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm); //getting error here
}
@Override
public Fragment getItem(int index) { //getting error here
switch (index) {
case 0:
// Top Rated fragment activity
return new TopRatedFragment();
case 1:
// Games fragment activity
return new GamesFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - …
Run Code Online (Sandbox Code Playgroud) 说明:
假设我有多个类别来自我的REST.我不知道它有多少类别是5,7或有时2等.我想用viewpager将所有类别放在我的选项卡上.我想根据类别大小创建一个选项卡.让我们看看例如假设在我的REST响应中只有2个类别它只创建两个选项卡.如果它有5个类别,那么5个标签,依此类推.
以下是创建选项卡的示例测试示例.
MainActivity.java
public class MainActivity extends AppCompatActivity {
TabLayout tabLayout;
ViewPager viewPager;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
tabLayout=(TabLayout)findViewById(R.id.tabs);
viewPager=(ViewPager)findViewById(R.id.viewpager);
setupViewPager(viewPager);
viewPager.setCurrentItem(0);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
for(int i=0;i<3;i++){
adapter.addFragment(new OneFragment(), "ONE");
// adapter.addFragment(new TwoFragment(), "TWO");
viewPager.setAdapter(adapter);
}
}
}
Run Code Online (Sandbox Code Playgroud)
ViewPagerAdapter.java
public class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager){
super(manager); …
Run Code Online (Sandbox Code Playgroud)