Android的充气的标签视图浏览 [英] Android Inflating Views of Tab View
问题描述
我要实现我的应用程序这个功能,如下图所示。
- 在用行动吧和行动项目活动
- 标签下面的动作条
- 在每个选项卡中都会有内容的。
我用Tab键片段和TabListeners至code。现在,当我运行的应用程序,我收到标签观点,但认为寻呼机和指标缺失。我得到一个活动,如下图所示。
我的code为如下图所示。
TabViewActivity的.java
公共类TabViewActivity扩展SherlockFragmentActivity {
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
copyPrivateRawResuorceToPubliclyAccessibleFile();
动作条动作条= getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//添加标签
标签TAB1 =动作条
。新标签()
.setText(细则)
.setTabListener(
新TabListener< TabFragment>(这一点,TAB1
TabFragment.class));
actionBar.addTab(TAB1);
标签TAB2 =动作条
。新标签()
.setText(地图)
.setTabListener(
新TabListener< TabFragment>(这一点,TAB2
TabFragment.class));
actionBar.addTab(TAB2);
//检查是否有一个保存的状态来选择活动标签
如果(savedInstanceState!= NULL){
getSupportActionBar()。setSelectedNavigationItem(
savedInstanceState.getInt(ACTIVE_TAB));
}
}
TabListener.java
公共类TabListener<吨延伸SherlockFragment>器物
ActionBar.TabListener {
私人SherlockFragment mFragment;
私人最终SherlockFragmentActivity mActivity;
私人最终字符串MTAG;
私人最终类别< T> mClass;
公共TabListener(活动活动,字符串变量,类< T> CLZ){
mActivity =(SherlockFragmentActivity)的活动;
MTAG =标签;
mClass = CLZ;
}
公共无效onTabSelected(TAB键,FragmentTransaction英尺){
//检查片段已经被初始化
SherlockFragment preInitializedFragment =(SherlockFragment)mActivity
。.getSupportFragmentManager()findFragmentByTag(MTAG);
如果(mFragment!= NULL){
//如果它存在,只需将它为了显示它
ft.attach(mFragment);
}否则,如果(preInitializedFragment!= NULL){
mFragment = preInitializedFragment;
ft.attach(mFragment);
} 其他 {
//未找到,所以实例化并把它添加到活动
mFragment =(SherlockFragment)SherlockFragment.instantiate(
mActivity,mClass.getName());
ft.add(android.R.id.content,mFragment,MTAG);
}
}
公共无效onTabUnselected(TAB键,FragmentTransaction英尺){
如果(mFragment!= NULL){
//分离的片段,因为另一个被连接
ft.detach(mFragment);
}
}
公共无效onTabReselected(TAB键,FragmentTransaction英尺){
//用户选择已经选择的选项卡。通常什么也不做。
}
TabFragment.java
公共类TabFragment扩展SherlockFragment {
//您的会员在这里变量
@覆盖
公共查看onCreateView(LayoutInflater充气,
ViewGroup中的容器,包savedInstanceState){
//充气的布局该片段
查看查看= inflater.inflate(R.layout.main,集装箱,假);
//做你的看法初始化这里
返回查看;
}
}
我有两个不同的类别对每个选项卡中单击命名details.java和maps.java。 请帮我在这里把这个code。 我还实施视图寻呼机。这是我的看法呼机code的详细信息选项卡。
DetailsActivity.java
公共类DetailsActivity扩展BaseSampleActivity {
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.place_details_layout);
mAdapter =新TestFragmentAdapter(getSupportFragmentManager());
mPager =(ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator =(CirclePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
}
}
BaseSampleActivity.java
公共抽象类BaseSampleActivity扩展FragmentActivity {
私有静态最后随机RANDOM =新的随机();
TestFragmentAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;
// FragmentTabHost mTabHost;
@覆盖
公共布尔onCreateOptionsMenu(菜单菜单)
{
。getMenuInflater()膨胀(R.menu.main,菜单);
返回true;
}
@覆盖
公共布尔onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.random:
最终诠释页= RANDOM.nextInt(mAdapter.getCount());
Toast.makeText(这一点,更改到页面+页,Toast.LENGTH_SHORT);
mPager.setCurrentItem(页);
返回true;
案例R.id.add_page:
如果(mAdapter.getCount()小于10){
mAdapter.setCount(mAdapter.getCount()+ 1);
mIndicator.notifyDataSetChanged();
}
返回true;
案例R.id.remove_page:
如果(mAdapter.getCount()→1){
mAdapter.setCount(mAdapter.getCount() - 1);
mIndicator.notifyDataSetChanged();
}
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
我没有看到任何code在那里为 ViewPager
,检查出的例子从杰克沃顿code <一个href="https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabsPager.java"相对=nofollow> FragmentTabsPager
I want to implement this feature in my app as shown below.
- Activity with Action bar and Action Items
- Tabs Below the actionbar
- Each of the Tabs will have content.
I used Tab fragments and TabListeners to code. Now when i run the app i am getting tab view but the view pager and indicator are missing. i am getting an activity as shown below.
My code is as shown below.
TabViewActivity .java
public class TabViewActivity extends SherlockFragmentActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
copyPrivateRawResuorceToPubliclyAccessibleFile();
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// add tabs
Tab tab1 = actionBar
.newTab()
.setText("Details")
.setTabListener(
new TabListener<TabFragment>(this, "tab1",
TabFragment.class));
actionBar.addTab(tab1);
Tab tab2 = actionBar
.newTab()
.setText("Maps")
.setTabListener(
new TabListener<TabFragment>(this, "tab2",
TabFragment.class));
actionBar.addTab(tab2);
// check if there is a saved state to select active tab
if (savedInstanceState != null) {
getSupportActionBar().setSelectedNavigationItem(
savedInstanceState.getInt(ACTIVE_TAB));
}
}
TabListener.java
public class TabListener<T extends SherlockFragment> implements
ActionBar.TabListener {
private SherlockFragment mFragment;
private final SherlockFragmentActivity mActivity;
private final String mTag;
private final Class<T> mClass;
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = (SherlockFragmentActivity) activity;
mTag = tag;
mClass = clz;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// Check if the fragment has already been initialised
SherlockFragment preInitializedFragment = (SherlockFragment) mActivity
.getSupportFragmentManager().findFragmentByTag(mTag);
if (mFragment != null) {
// If it exists, simply attach it in order to show it
ft.attach(mFragment);
} else if (preInitializedFragment != null) {
mFragment = preInitializedFragment;
ft.attach(mFragment);
} else {
// Not found, so instantiate and add it to the activity
mFragment = (SherlockFragment) SherlockFragment.instantiate(
mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
}
}
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.
}
TabFragment.java
public class TabFragment extends SherlockFragment {
// your member variables here
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.main, container, false);
// do your view initialization here
return view;
}
}
I have two different classes for each tab click named details.java and maps.java. please help me where to place this code. I have also implemented view pager. this is my view pager code for details tab.
DetailsActivity.java
public class DetailsActivity extends BaseSampleActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.place_details_layout);
mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
}
}
BaseSampleActivity.java
public abstract class BaseSampleActivity extends FragmentActivity {
private static final Random RANDOM = new Random();
TestFragmentAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;
//FragmentTabHost mTabHost;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.random:
final int page = RANDOM.nextInt(mAdapter.getCount());
Toast.makeText(this, "Changing to page " + page, Toast.LENGTH_SHORT);
mPager.setCurrentItem(page);
return true;
case R.id.add_page:
if (mAdapter.getCount() < 10) {
mAdapter.setCount(mAdapter.getCount() + 1);
mIndicator.notifyDataSetChanged();
}
return true;
case R.id.remove_page:
if (mAdapter.getCount() > 1) {
mAdapter.setCount(mAdapter.getCount() - 1);
mIndicator.notifyDataSetChanged();
}
return true;
}
return super.onOptionsItemSelected(item);
}
}
I don't see any code in there for a ViewPager
, check out the example code from Jake Wharton's FragmentTabsPager
这篇关于Android的充气的标签视图浏览的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!