Articles of android fragments

将支持库更新到27.0.0后,我的片段中出现多个错误

将支持库从v-26.1.0更新到v-27.0.0后,我的片段中出现多个错误。 这是一些这些错误的列表: 错误:智能转换为’Bundle’是不可能的,因为’arguments’是一个可变属性,此时可能已被更改。 错误:’onCreateView’不会覆盖任何内容 错误:’onViewCreated’不会覆盖任何内容 错误:types不匹配:推断types是View? 但预计是View 错误:types不匹配:推断types是上下文? 但是上下文是预期的 错误:types不匹配:推断types是FragmentActivity? 但是上下文是预期的 错误:types不匹配:推断types是FragmentActivity? 但是上下文是预期的 来自android studio的空片段模板。 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (arguments != null) { mParam1 = arguments.getString(ARG_PARAM1) mParam2 = arguments.getString(ARG_PARAM2) } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater!!.inflate(R.layout.fragment_blank, container, false) } override fun onViewCreated(view: View?, savedInstanceState: Bundle?) […]

如何在导航抽屉中获取项目以更改视图

我想用导航抽屉制作一个简单的应用程序,它可以打开其他视图(新闻,信息,图库,联系人等)。 所以我打开了最新的Android Studio,制作了一个与API8> API19兼容的新项目,以获得最大的覆盖面。 我选择了预设的导航抽屉并点击完成。 我已经想出要更改导航抽屉中项目的名称,但是如何让这些项目重定向到新视图? 我已经尝试将setOnItemClickListener实现到MainActivity中,正如导航抽屉网站在http://developer.android.com上所说的那样。 但我似乎无法弄清楚这一切是如何联系在一起的,它不会起作用。 tl; dr:我需要帮助,使导航抽屉中的项目启动一个新的视图/片段,并可能解释它是如何工作的。 这是应用程序项目(Android Studio) https://www.dropbox.com/s/qfz9oul62dzt3rr/NTI_SHOWCASE.zip MainActivity.java package com.christianarne.ntishowcase; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.content.Context; import android.os.Build; import android.os.Bundle; import android.text.Html; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import […]

如何以编程方式创建片段的布局?

现在创建片段我做了以下代码。 文件名:fragment_a.xml 在Java中 public class FragA extends Fragment{ View view_a; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view_a = inflater.inflate(R.layout.fragment_a, container, false); return view_a; } } 现在我需要知道是否有任何方法可以创建片段视图而无需创建xml文件并将代码写入其中? 我想说的是我不想为片段创建一个xml文件而我想用java代码为该片段创建视图。 那可能吗?

使用支持库实现TabListener

我正在尝试实现Tab导航,但我想确保拥有旧版Android的人仍然可以使用我的应用程序。 应用程序考虑ATM非常简单,我只是想了解如何实现布局,然后我将添加缺少的位。 无论如何,我有一个扩展Fragment Activity的Container Activity(以确保兼容性),这个Activity使用ActionBar创建一个TabView(我相信我的问题就在这里)。 该应用程序将尝试创建三个选项卡并将其添加到ActionBar,我想确保用户可以使用横向导航来回滚动。 这是TabListener我试图实现: public static class TabListener implements ActionBar.TabListener { private Fragment mFragment; private final Activity mActivity; private final String mTag; private final Class mClass; public TabListener(Activity activity, String tag, Class clz) { mActivity = activity; mTag = tag; mClass = clz; } public void onTabSelected(Tab tab, FragmentTransaction ft) { if […]

碎片未从内存中释放

我有一个活动,其中包含一个具有适配器FragmentStatePagerAdapter的View Pager。 每次进入活动时,它将占用200mb的内存,在退回活动后(finish())然后重新输入它将附加并加倍手机上使用的内存。 在对问题进行故障排除后,似乎片段管理器没有释放片段,尽管我试图删除它们但它只是不起作用。 我尝试清空正在添加的片段以确保它不是片段内部的问题仍然存在。 我的适配器代码是 private class ChildrenPagerAdapter extends FragmentStatePagerAdapter { private List childrenBean; public ChildrenPagerAdapter(FragmentManager fm, List bean) { super(fm); this.childrenBean = bean; } @Override public int getItemPosition(Object object) { return PagerAdapter.POSITION_NONE; } @Override public Fragment getItem(int position) { ReportFragment reportFragment = new ReportFragment(); reportFragment.childBean = childrenBean.get(position); reportFragment.position = position; reportFragment.mPager = mPager; […]

如何告诉我的自定义FragmentPagerAdapter停止销毁我的碎片?

我有一个带有FragmentPagerAdapter的ViewPager,我的应用程序之前只使用了两个片段(不同types)而没有问题。 我刚刚添加了第三个片段,现在我的适配器/ viewpager似乎在我远离它们时会破坏我的碎片。 例如,如果我在第1页,第3页将被销毁并在我接近它时重新创建。 如果我在第3页,第1页也是如此。 这在我的应用中引起了很多问题。 片段根本不是RAM很重,所以我怎么能阻止这种情况发生呢?

是否可以刷新片段的视图

我以编程方式更改了应用程序的locale ,如下所示: Resources res = context.getResources(); DisplayMetrics dm = res.getDisplayMetrics(); android.content.res.Configuration conf = res.getConfiguration(); conf.locale = new Locale(“cn”); res.updateConfiguration(conf, dm); 在此之后,我想刷新当前显示的片段视图以显示新的区域设置。 所以,我首先得到当前片段(这是最新的一个在backstack ): BackStackEntry latestEntry=fragMgr.getBackStackEntryAt(fragMgr.getBackStackEntryCount()-1); String str=latestEntry.getName(); Fragment fragment=fragMgr.findFragmentByTag(str); 在我获得当前显示的片段后,我想刷新它的视图 ,但是怎么做呢? 在Android中是否可以刷新片段的视图

在选定的底部导航视图项上重新创建片段

以下是我选择的底部导航视图项的代码 bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Fragment fragment = null; switch (item.getItemId()) { case R.id.action_one: // Switch to page one fragment = FragmentA.newInstance(); break; case R.id.action_two: // Switch to page two fragment = FragmentB.newInstance(); break; case R.id.action_three: // Switch to page three fragment = FragmentC.newInstance(); break; } getSupportFragmentManager().beginTransaction().replace(R.id.container,fragment,”TAG”).commit(); return true; […]

片段之间animation的共享元素

我正在尝试将RecyclerView中所选项目的2个简单视图设置为新片段。 我已经查看了很多将共享元素从一个Activityanimation到另一个Activity的示例,但很少有animation将共享元素从一个Fragmentanimation到同一个Activity中的另一个Fragment的例子。 它几乎可以工作。 这是我的结构。 活动 – 使用RecyclerView的全屏Fragment1 – 带有详细信息的全屏Fragment2 当用户在Fragment1中的RecyclerView中选择一个项目时,我将Fragment1替换为具有View的Fragment2,其中包含不同位置和大小的共享元素。 要让它工作有一些技巧,你必须确保你的transitionName对于列表中的每个项都是唯一的,当然,transitionName必须与Fragment2中元素的transitionName匹配才能播放animation。 我有这个部分工作,当我选择一个项目时,2个共享视图会animation,而不是在两个活动之间进行animation时的预期。 如果我选择屏幕底部附近的项目,它会绘制View for Fragment2并为2个共享视图设置animation,就好像它们位于屏幕顶部的项目中一样。 很难解释。 这是一些照片 片段1 Fragment2 在这两个片段中我都设置了以下内容 setSharedElementEnterTransition(new ChangeBounds()); setSharedElementReturnTransition(new ChangeBounds()); setAllowEnterTransitionOverlap(true); setAllowReturnTransitionOverlap(true); 同样在他们的onCreate()中的父Activity中我设置了 getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); 我知道为什么我的共享元素animation从我的屏幕顶部开始,即使它们是从屏幕底部的选定项目开始的?

应用程序内容落后于android L中的导航栏

正如您所看到的,我的“Got It”按钮位于导航栏后面。无法修复它! 我努力了 true 以及在布局文件中设置它。 我在21世纪的主题是: true false false @null true 与整个应用程序中的所有屏幕相同的情况。 请帮忙。