Articles of android fragments

碎片尚未附加?

以下是我的代码。 我想要实现的是我在Recycler视图中显示viewholder。 内部视图寻呼机我正在显示一个片段,在向左滑动时,我正在显示另一个片段。 但是当我运行应用程序时。 应用程序崩溃。不知道我哪里出错了。 我认为这是片段概念的一部分。 请帮帮我 @Override public void onBindViewHolder(ManageCustomerViewHolder holder, int position) { holder.viewPager.setAdapter(new MyPageAdapter(fragmentManager, fragments)); } private List getFragments() { List fList = new ArrayList(); fList.add(MyFragment.newInstance(“Fragment 1”)); fList.add(Myfragment1.newInstance(“Fragment 2”)); return fList; } public class ManageCustomerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { ViewPager viewPager; viewPager = (ViewPager) itemView.findViewById(R.id.viewpager); itemView.setOnClickListener(this); } 这就是错误: java.lang.IllegalStateException:片段尚未附加。

DialogFragment中的工具栏

在我们的应用程序中,我们有一些片段可以显示为全屏片段或对话框片段。 这些片段inheritance自DialogFragment ,我们确保根据应用程序执行的模式(全屏或对话框)正确实例化它们。 在使用Lollipop在支持库中引入Toolbar小部件的最新更改之后,我们考虑为其中一些对话框片段添加一些额外的function。 我们的想法是在我们的DialogFragment子类中存在普通片段(即onCreateOptionsMenu执行后膨胀的选项菜单)时通常具有的选项菜单types,当它们可视化为对话框时。 简而言之:当片段以全屏模式显示时,我们会对传统的选项菜单进行充气,当片段显示为对话框时,我们希望使用相同的选项菜单,但在独立模式下使用新的工具栏小部件。 我按照http://android-developers.blogspot.dk/2014/10/appcompat-v21-material-design-for-pre.html中的步骤操作,我设法“激活”工具栏,但似乎菜单是没有膨胀 – 参见附件截图(在全屏模式下图片一个片段,在对话框模式下图片二)。 甚至可以使用DialogFragment的新工具栏来DialogFragment选项菜单吗?

从下一个屏幕返回时,ViewPager数据丢失

我在我的应用程序中使用ViewPager,其中有三个选项卡; 我在片段中使用ViewPager。 现在我的问题是,我在加载应用程序时正确获取数据,但是当我进入下一页然后返回ViewPager时,数据丢失且标签不起作用。 请帮助我 以下是我的代码: import com.devpoint.rprtjobs.R; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTabHost; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.support.design.widget.TabLayout; public class MainActivity extends Fragment { // Declaring Your View and Variables Toolbar toolbar; ViewPager pager; SwipeViewPagerAdapter adapter; SlidingTabLayout tabs; CharSequence Titles[]={“OnGoing”,”UpComing”,”Expired”}; […]

Android:Fragments,SQLite和Loaders

所以我已经到了需要为我的应用程序实现SQLite数据库的地步。 在“忙碌的编码器Android开发指南”之后,我创建了一个扩展SQLiteOpenHelper的DatabaseHelper类。 我的一个用例是对数据库运行查询并在Fragment的ListView上显示结果(我使用支持库中的片段)。 根据我的理解,使用managedQuery()并不合适,即使它是不推荐的,因为这个方法中封装的一些逻辑实际上是在主线程上执行的,特别是reQuery()我的理解是在重新启动Activity时执行的。 所以我第一次尝试熟悉Loader类,只看到这个: “The only supplied concrete implementation of a Loader is CursorLoader, and that is only for use with a ContentProvider” 我最初的想法是实现我自己的内容提供商,并可能阻止其他应用程序访问它,然后我通过developer.android.com在ContentProvider文档中阅读以下内容: “You don’t need a provider to use an SQLite database if the use is entirely within your own application.” 我也一直在玩这个: https://github.com/commonsguy/cwac-loaderex 但我不熟悉这个项目,也不确定它是否可以在生产环境中使用。 所以,现在我能想到的就是在我的Fragment创建一堆AsyncTask实例并适当地管理它们的生命周期,确保它们在需要时被取消等等。 还有其他选择吗?

使用导航抽屉处理片段后栈

我正在实施导航抽屉,效果很好。 所以我在导航抽屉点击上调用片段,它也正在工作,而且我正在调用主页片段中的另一个片段,并为每个片段维护后台堆栈,但问题是从子片段重新按下我不能去主页片段,刚退出应用程序。 我不想要这个。 我想要的点击 Navigation Drawer->HomePageFragment->AnotherChild Fragment(On List Item click of HomePageFragment) 但是在没有进入Homepage片段的情况下按下它直接退出应用程序。 这是我的代码:( (In Fragment Activity with Navigation Drawer) class SlideitemListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { updateDisplay(position); } } private void updateDisplay(int position) { Fragment fragment = null; switch (position) { case 0: fragment […]

Android – Google Maps API v2 – SupportMapFragment错误

我试图首次使用Google Maps API v2重新启动并运行我的某个应用程序。 我在我的密钥库中为我的应用程序创建了一个密钥,提取了SHA1哈希,获取了一个API密钥,然后在应用程序中执行了以下操作…我包括: 谷歌播放,services.jar 以及导入GooglePlayServices库并将其添加为项目的参考。 在我的Java代码中,我只是加载布局资源。 public class Times extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map); } } 在我试图实例化的布局(res / layout / map.xml)中,我有: 我的清单中还声明了以下内容: 并在清单的Application标签中声明: 加载活动时,它会在LogCat中崩溃并出现以下错误: FATAL EXCEPTION: main java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source) 我试图研究这个问题,但是我无法find我想要的东西。 非常感谢任何和所有的帮助。

测量片段中的视图

我需要知道ImageView的宽度和高度。 有没有办法在片段中测量它? 在标准Activity中我使用: @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); image.getWidth(); image.getHeight(); } 但我在哪里可以使用image.getWidth(); 和image.getHeight(); 片段?

FragmentPagerAdapter – 当用户转到新标签时如何检测滑动或标签点击?

我有一个MainActivity ,在FragmentPagerAdapter中有三个片段,如下所示。 如何通过滑动或单击选项卡,如何找出用户从第一个片段到第二个片段或从第二个片段到第二个片段的时间? 我看到getItem()方法不会被调用,因为我已经声明了mViewPager.setOffscreenPageLimit(2) ; public class MainThreeTabAdapter extends FragmentPagerAdapter { private final String[] CONTENT = new String[]{“News”, “Rewards”, “Me”}; public MainThreeTabAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { if (position == 0) { return NewsFragment.newInstance(); } else if (position == 1) { return RewardsFragment.newInstance(); } else if (position == 2) { […]

ScrollView中的ViewPager – 垂直滚动不起作用

所以,我有一个带有一个孩子的ScrollView一个有两个孩子的LinearLayout :一个TextView和一个ViewPager 。 ViewPager包含具有许多元素的布局,这就是我需要能够垂直滚动的原因。 只有ViewPager页面可以水平滚动(即:我只想在ViewPager水平滑动)。 一个TextView不能水平滚动,而应该与我的ViewPager一起滚动。 简单? 没有。 我在StackOverflow中看到了非常类似的问题( 这里 , 这里 , 这里和这里 )。 没有一个建议的解决方案适合我:( 我看到的是这个 < – 我的甜蜜UI :),但我无法垂直滚动:( 在ViewPager中嵌入ScrollViews不是一个选项 – UI的设计禁止这样做。 也许这是我用编程方式填充视图寻呼机中的每个页面的东西? 嗯… 任何建议,将不胜感激。 我的代码: activity_main.xml中: ViewPager中的每个页面都有这样的布局: 单个元素在这样的页面中的布局: 单页片段也很简单: public class DayFragment extends Fragment { private static final String TAG = DayFragment.class.getSimpleName(); public String tag; LinearLayout data; View mView; final int ROWS_NUM […]

Android – addToBackStack()不起作用?

这是负责向后台堆栈添加片段的函数: public void populateContent(File f) { ContentFragment cf = new ContentFragment(ctx, ac, this); FragmentTransaction transaction = ac.getSupportFragmentManager().beginTransaction();; cf.updateView(f); transaction.replace(R.id.contentFragment, cf); transaction.addToBackStack(null); transaction.commit(); } 当我单击后退按钮时,最后一个片段不会被加载(没有任何反应)。 知道是什么原因造成的吗? 编辑:FragmentManager日志。 http://pastebin.com/mYnVdkLG 在我看来,好像我的应用程序正在保存第二个视图两次,而不是保存第一个视图,然后保存第二个视图。