Articles of android fragments

碎片显示在彼此之上

我有一个带有DrawerLayout的Activity,使用http://developer.android.com/training/implementing-navigation/nav-drawer.html中的指南。 当我点击drawerItem时,我用新片段替换当前视图: Fragment fragment; Bundle args = new Bundle(); fragment = new NewsListFragment(); args.putInt(“category”, position); // Insert the fragment by replacing any existing fragment FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.content_frame, fragment) .commit(); mDrawerList.setItemChecked(position, true); 现在,有时旧片段不会被替换,但新片段放在旧片段之上: http://img15.imageshack.us/img15/3179/1kqj.png 这是为什么,以及如何解决这个问题? 相关XML: 这种情况有时只会发生,我还没有find重现这一点的流程。 该应用程序不支持旋转,所以它不会发生在那里。

Android – 创建适配器的NullPointerException

我正在为列表视图创建一个数组适配器,一切正常,我有2个片段,并且操作栏顶部的2个按钮在这2个片段之间发生变化。 我的问题是,如果我在这些碎片之间移动太快,我会崩溃,当我打开fragOne,切换到fragTwo,然后快速移回fragOne .. fragOne从getActivity上下文抛出一个NPE .. 这就是崩溃的界限: adapter = new MainFragmentDocumentAdapter(getActivity(), docsList, DocumentsFragment.this, page); 日志报告: E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.bbb.app, PID: 17438 java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.Object android.content.Context.getSystemService(java.lang.String)’ on a null object reference at android.widget.ArrayAdapter.init(ArrayAdapter.java:310) at android.widget.ArrayAdapter.(ArrayAdapter.java:104) at com.bbb.app.UI.adapters.MainFragmentDocumentAdapter.(MainFragmentDocumentAdapter.java:51) 任何想法如何解决这个问题?

具有自定义视图层次结构的Android + ListFragment

我试图通过从onCreateView(LayoutInflater, ViewGroup, Bundle)返回我自己的视图层次结构来自定义片段布局。 这膨胀了我的自定义视图,但似乎堆叠视图而不是在内部膨胀,我立刻看到了所有内容。 任何帮助表示赞赏。 MyActivity.java: public class MyActivity extends FragmentActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) { ArrayListFragment list = new ArrayListFragment(); getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit(); } } public static class ArrayListFragment extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { inflater.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.main, container); return super.onCreateView(inflater, container, […]

如何将数据从一个片段发送到另一个片段?

嗨,我知道这个问题有答案。 我已经尝试了所有这些,但它在我的应用程序中无效。 我正在开发一个具有3个Fragment活动的应用程序。 第一个片段显示一个网站,第二个片段显示listview,第三个片段显示另一个列表视图。 现在我想在用户点击listitem时将第三个片段的URL发送到第一个片段。这就是我所做的。 我正在从这个Fragment发送字符串url到第一个片段。 list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView adapter, View view, int position, long id) { FragmentC fragment = new FragmentC(); final Bundle bundle = new Bundle(); bundle.putString(“position”, “http://www.facebook.com”); fragment.setArguments(bundle);} }); 这是我需要url并希望在网页浏览中显示的第一个片段。 String url=”http://www.hotelsearcher.net/”; Bundle args = getArguments(); if (args != null){ url = args.getString(“position”); } WebView webView= (WebView) V.findViewById(R.id.webView1); […]

Actionbarsherlock + tabs +多片段?

我努力让actionbarsherlock + tabs + fragment工作。 我只能将这个设置作为静态工作,我想创建这个像Android市场应用程序(滑动运动)。 当你需要用内部的多个片段来扩充布局时,我会陷入困境。 在Support4demos中,我以FragmentsTabsPager为例。

IllegalArgumentException:找不到用于片段的id的视图 – ViewPager中的ViewPager

我遇到了困扰我好几天的问题。 主活动中有一个ViewPager ,它将3个Fragment作为制表符片段保存。 在第一个片段中有一个ListView ,它包含一些视图,其中最重要的是另一个ViewPager 。 我想在子ViewPager保存一些照片,并在这里使用更多片段。 现在有麻烦: 当第一个 Fragment停止时(在屏幕上看到父ViewPager的第三个片段)并恢复(用户切换到第二个片段),应用程序崩溃,调试器说: java.lang.IllegalArgumentException: No view found for id 0x7f05008b (com.example.viewpager:id/sub_viewpager) for fragment ScreenSlidePageFragment 我已经使用了getChildFragmentManager()因为这是嵌套片段的情况。 以下是与父ViewPager中第一个片段对应的列表适配器的关键代码: @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); switch (type) { case TYPE_BANNER: if (convertView == null) { convertView = mBannerView.getBannerView(parent); } mBannerView.update(convertView); break; case TYPE_ITEM: […]

对话框碎片与wrap_content以全屏显示。 如何使其成为布局的高度而不是全屏?

我创建了一个自定义对话框片段及其xml,如下所示: 当我调用此对话框时,它将按照屏幕截图中的全屏显示: 如何将此对话框的大小限制为列表和按钮的高度? 如何删除多余的空白区域?

片段getArguments()返回null

我有一个Fragment ,它有一个TabHost作为根布局如下… 为选项卡内容创建/更新每个Fragment的代码如下… private void updateTab(String tabId, int placeholder) { FragmentManager fm = getFragmentManager(); if (fm.findFragmentByTag(tabId) == null) { Bundle arguments = new Bundle(); arguments.putInt(“current_day”, mCurrentTab); EpgEventListFragment fragment = new EpgEventListFragment(); fragment.setArguments(arguments); fm.beginTransaction() .replace(placeholder, new EpgEventListFragment(), tabId) .commit(); } } 在EpgEventListFragment的onCreate(…)方法中,然后尝试获取参数Bundle但我总是得到null执行以下操作… @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle arguments = getArguments(); if (arguments == […]

ViewPager片段随着时间推移会被破坏?

我正在使用Android的support.v4包来开发包含多个Fragment的ViewPager。 我试图在用户更改页面时隐藏视图。 所以,我实现了一个OnPageChangeListener来监听我的适配器,并在发生页面更改时调用Fragment的update()方法。 但我得到一个NullPointerException ,我无法弄清楚为什么。 这是代码: public class MyActivity extends FragmentActivity implements OnPageChangeListener { private static final int NUM_ITEMS = 2; private ViewPager mPager; private static SpaceAdapter mAdapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_pager); mAdapter = new SpaceAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.pager); mPager.setAdapter(mAdapter); mPager.setOnPageChangeListener(this); […]

FragmentPagerAdapter – 如何处理方向更改?

我使用FragmentPagerAdapter包含几个需要通知数据库更改的片段。 我通过遍历实现回调接口的片段并调用refreshData()方法来完成此操作。 这可以正常工作,直到设备改变方向。 方向更改后,即使方法调用似乎有效,片段UI也不会明显刷新。 从我到目前为止所读到的,这是因为FragmentPagerAdapter处理片段生命周期,并且接收回调的片段不是实际显示的片段。 private class DataPagerAdapter extends FragmentPagerAdapter { private DataFragment[] fragments = new DataFragment[] { new FooDataFragment(), BarDataFragment()}; public DataPagerAdapter(android.support.v4.app.FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragments[position]; } @Override public int getCount() { return fragments.length; } public DataFragment[] getFragments() { return fragments; } } protected void refreshData() […]