Articles of android fragments

Viewpager碎片在第一次之后不显示

我有一个3片段的活动(A,B,C)。 片段A由具有2个ListFragments 。 用户可以点击任何列表片段中的项目,并且通过这样做,去片段B. 在片段AI中: @Override public void onAttach(Activity activity) { super.onAttach(activity); pagerAdapter = new PagerAdapter(getActivity().getSupportFragmentManager()); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragmentA, container, false); vpPager = (ViewPager)view.findViewById(R.id.vpPager); vpPager.setOffscreenPageLimit(2); vpPager.setAdapter(pagerAdapter); vpPager.addOnPageChangeListener(this); return view; } PagerAdapter如下所示: private class PagerAdapter extends FragmentPagerAdapter { private final ListFragment1 lf1 = ListFragment1 […]

“内容具有ID属性'android.r.id.list'不是一个ListView类的视图”当在一个片段中创build一个列表视图

这是问题。 我有一个列表视图,它看起来很好,但它打破了错误。 内容有id属性“android.r.id.list”不是一个ListView类的视图。 我没有添加到XML的列表视图,如:@android:列表,我没有这样做的原因是我可以find一些例子,他们不需要创build这样的XML列表,所以我现在该做什么? 如何解决它? 谢谢! 代码为Fragment.java package com.example.demo3; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.app.ListFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.SimpleAdapter; import android.widget.TextView; public class ContactsFragment extends ListFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View contactLayout = inflater.inflate(R.layout.contacts_layout, container, false); return […]

如何在片段中实现onBackPressed()和意图?

我知道onBackPressed()是一个活动中的方法,但是我想使用片段中的function,当按下返回button时,它通过Intent被redirect到另一个活动。 有没有解决这个问题? public class News_Events_fragment extends Fragment { ProgressDialog pd; ListView lv1; SharedPreferences sharedPreferences = null; int NotiCount; TextView txt_title, txt_msg, textView; Context context; Intent intent ; ArrayList<SliderMsgTitleModel> CurrentOfficersPastList; NewsActivityAdapter pastAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { context = (Context) getActivity(); View rootView = inflater.inflate(R.layout.activity_news, container, false); new AsyncTask<Void, Void, ArrayList<SliderMsgTitleModel>>() […]

如何将数据从活动发送到片段

我知道这里有很多关于这个的话题。 我也多次阅读文档,但是我找不到将数据从活动传递到片段的最佳方法。 我想能够显示我的search活动的结果在两个不同的布局(列表和地图)使用滑动视图与选项卡 。 我必须传递2个数据到片段:当前用户位置的“currentLocation”和作为对象列表的“result”。 我已经省略了我的代码的一些部分,使其更容易理解。 SearchableActivity.java public class SearchableActivity extends ActionBarActivity implements TabListener { List<PlaceModel> result = new ArrayList<PlaceModel>(); private SearchView mSearchView; private String currentLocation; AppSectionsPagerAdapter mAppSectionsPagerAdapter; ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_searchable); final ActionBar actionBar = getSupportActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mAppSectionsPagerAdapter); mViewPager.setOnPageChangeListener(new […]

TabLayout的Tabs不显示

我有一个主要的活动,其中包含一个片段,而该片段又承载一个TabLayout(与一个ViewPager)。 显示标签栏,不显示标签本身。 这里是我的主要活动中用于显示主机片段的代码: Fragment fragment = new BMITabsFragment(); FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(Constants.BMI_TABS_FRAGMENT).commit(); 这是我的片段,它承载TabLayout,这是BMITabsFragment(SA): public class BMITabsFragment extends Fragment { … @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // Get the […]

使用FragmentActivity中的viewPager方向改变

我正在尝试构build一个以纵向和横向模式显示书籍的应用程序。 所以显然有1页在肖像和2在景观。 每个模式工作的相当不错,但是当我从纵向更改方向viewPager尝试从纵向模式获取2页,而不是试图从横向模式获取2个双页…实际上, FragmentStatePagerAdapter保持2个片段以纵向创build并在为横向模式创build2个双页之前使用它们 。 如果我再次以纵向模式切换,FragmentStatePagerAdapter使用之前在横向模式下创build的2个片段,所以我再次看到1双页,而不是1单页等..如果我继续切换方向,我得到一个OutOfMemoryError,由于FragmentStatePagerAdapter从来没有刷新方向变化的碎片。 这里有两个用例,以便于理解: 我以纵向模式启动viewPager 我看到页面1好 我向右滑动,然后看第2页 我向右滑动,然后看第3页 我将屏幕旋转到横向模式 我看到第3页错误 我向右滑动,并看到第4页错误 我向右滑动,我看到第5页和第6页确定 我以纵向模式启动viewPager 我看到页面1好 我向右滑动,然后看第2页 我向右滑动,然后看第3页 我向右滑动,然后看第4页 我向右滑动,然后看第5页 我将屏幕旋转到横向模式 我看到第5页错误 我向左滑动,并看到第4页错误 我向左滑动,我看到页面2和3确定 public class PlayerFragmentActivity extends FragmentActivity { private Intent mIntent; private ViewPager mPortraitPager; private ViewPager mLandscapePager; private Boolean mIsLandscape; private String mKey; private int mNbPages; private int mNbDoublePages; private PageFactory mPageFactory; […]

在添加内容之前,必须要求窗口function,同时在片段中实现对话框

我有一个片段,我需要显示一个自定义对话框。 请在下面查看我的代码。 public class MyFragment extends Fragment{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.send_layout, container, false); TextView txtView = (TextView) rootView.findViewById(R.id.tv); txtView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { openDialog(); } }); return rootView; } public void openDialog(){ AppCompatDialog […]

如何正确创build一个Tablayout现在Tabactivity已被弃用?

自引入碎片以来,TabActivity已被弃用。 然而,Hello Views TabLayout教程仍然使用TabActivity,API文档没有明确的答案,就如何使用Fragments而不是TabActivity创buildTab Layout。 现在如何构buildTablayouts TabActivity已被弃用?

片段isVisible()如果不是,则为true

我有一个活动与片段容器和两个片段使用像“列表片段 – >细节片段” private boolean isFirstFragmentAdded() { return getSupportFragmentManager().findFragmentByTag("FIRST_FRAGMENT_TAG") != null; } private boolean isFirstFragmentVisible() { return getSupportFragmentManager().findFragmentByTag("FIRST_FRAGMENT_TAG").isVisible(); } private boolean isSecondFragmentAdded() { return getSupportFragmentManager().findFragmentByTag("SECOND_FRAGMENT_TAG") != null; } private boolean isSecondFragmentVisible() { return getSupportFragmentManager().findFragmentByTag("SECOND_FRAGMENT_TAG").isVisible(); } private void addFirstFragment() { firstFragment = new FirstFragment(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment, "FIRST_FRAGMENT_TAG").commit(); } private void showFirstFragment() { firstFragment = new FirstFragment(); […]

如何使导航抽屉中的特定项目显示为选中状态?

我已经对这个问题感到沮丧了很长一段时间,但我似乎无法使导航抽屉中的项目以编程方式显示,也不能在用户select时显示。 我正在尝试实现以下http://img.androidcookie.com/android/PIHEm.png (我现在还不能发布图片) 我遵循http://developer.android.com/training/implementing-navigation/nav-drawer.html中的示例导航抽屉,每当切换片段时, setItemChecked()在导航抽屉的ListView上调用setItemChecked() mDrawerListView.setItemChecked(position, true); ,但似乎没有select在列表视图中的位置的项目。 我的布局文件也几乎完全像谷歌的例子 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <ListView android:id="@+id/left_drawer" android:layout_width="160dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#e5e5e5" /> </android.support.v4.widget.DrawerLayout> 任何帮助非常感谢,并提前感谢。 编辑:这是我的导航抽屉的初始化代码。 正如你所看到的,我没有使用自定义的ListView或Adapter。 private void setUpDrawer() { mDrawerListViewItems = getResources().getStringArray(R.array.drawer_list_item_names); mDrawerListView = (ListView) findViewById(R.id.left_drawer); mDrawerListView.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mDrawerListViewItems)); mDrawerListView.setOnItemClickListener(new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> […]