Articles of android fragments

SearchView不会在TabLayout的每个子选项卡中进行过滤

在这里,我在Activity中有一个包含SearchView的toolbar 。 而且该活动有多个片段。 其中一个主要碎片本身内部还有10个碎片。 所有10个片段都在列表视图中显示数据。 现在我试图通过SearchView of MainActivity过滤所有片段列表。 但它从不过滤每个片段的列表。 现在我告诉你我是如何实现它的。 MainActivity.java public class MainActivity extends AppCompatActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); final SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search)); SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); changeSearchViewTextColor(searchView); return true; } } Fragment.java public class CurrencyFragment2 extends android.support.v4.app.Fragment implements SearchView.OnQueryTextListener { @Override public void setMenuVisibility(boolean […]

活动之间的卡片翻转animation

如何在活动之间进行卡片翻转animation http://developer.android.com/training/animation/cardflip.html 上面的链接在静态布局之间切换..我想在2个具有动态布局的活动之间做一个CardFlip ..谢谢提前.. 🙂 我有两个活动…… 包含产品详细信息的Main_Activity (Say Galaxy s3) Search_Activity ,用于查询用户搜索请求。 Main_Activity有一个搜索按钮。 单击按钮时, Main_Activity视图必须将卡片翻转为Search_Activity 。 类似地,一旦用户选择了产品,它应该是Card-Flip反之亦然。 我尝试按照上面的URL中所提到的那样实现..但它只在使用XML定义的两个静态布局之间翻转。 我正在ActionBar实现搜索

切换到新片段时出现奇怪的logcat错误

我没有遇到像这样的堆栈跟踪。 这特别奇怪,因为我只能在调试时得到错误。 (在没有调试的情况下运行应用程序不会产生此错误)。 从导航抽屉中选择特定页面时会发生这种情况。 我刚刚从活动切换到片段,我可能没有正确处理我的片段事务。 我很感激任何输入! 非常感谢,节日快乐! 这是堆栈跟踪: Process: com.kohlerbear.whowascnscalc, PID: 2415 java.lang.NullPointerException: Attempt to read from field ‘boolean android.support.v4.app.BackStackRecord.mAddToBackStack’ on a null object reference at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:685) at android.support.v4.app.FragmentManagerImpl.execPeerrorndingActions(FragmentManager.java:1479) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:447) at android.os.Handler.handleCallback(Handler.java:740) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5223) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 这就是我如何处理我的片段更改(不确定这是否是问题,只是通过跟踪提到后台堆栈的事实来判断)。 无论我是否调用ft.addToBackStack(null) ,应用程序崩溃(再次,仅在调试时ft.addToBackStack(null) 。 Fragment frag = […]

如何使用新的设计库API正确隐藏和显示操作栏?

背景 假设我在活动中有这些元素: 动作栏(实际上是工具栏) 标签(使用TabLayout) ViewPager,带有片段。 每个片段都有ListVIew / RecyclerView。 我希望与许多应用程序具有相同的行为,滚动时,操作栏将隐藏或显示。 一个完美的例子就是Play商店滚动的工作原理。 像这样的东西(但当然在片段中使用ListView): 问题 我find了“ Android-ObservableScrollView ”库,它显示了如何为许多types的滚动视图执行此操作,但它不处理新TabLayout用法的情况(加上它有问题),如新样本所示,喜欢cheesesquare 。 在设计库的新API(在“cheesesquare”示例中显示)上,它更加自动化,因此您不需要创建如此多的样板来处理滚动以及如何处理它。 像这样的东西: <android.support.v4.widget.DrawerLayout 这个雇佣小组承诺小吃店将位于FAB之下,并且动作栏将根据片段的内部RecyclerView自动生成animation(显示/隐藏)。 事实上,这似乎只适用于RecyclerView ,而不适用于ListView。 由于它们非常复杂,因此很难将它们转换为RecyclverViews。 这个问题 如何使上述机制也适用于ListViews? 有办法吗? 如果是这样,怎么样? 编辑:遗憾的是,谷歌似乎不支持ListView的这种行为,但仅适用于RecyclerView和NestedScrollView( 这里写的)。 所以我尝试使用“ Android-ObservableScrollView ”库,但它有很多滚动问题,包括出现问题。 现在我决定给Android-ParallaxHeaderViewPager 。 有谁能告诉我如何使它在当前的情况下工作? 它甚至可能吗? 编辑:毕竟我决定转换为RecyclerView。 但是,我尝试过的所有示例都显示了一个问题:当停止滚动时,动作栏(甚至可能是FAB)可以保持截断状态,而不是游戏商店,它将被animation化为隐藏/显示。 编辑:当onScrollStateChanged具有IDLE时,我似乎需要使用setExpanded。 问题是,如何决定何时扩展以及何时崩溃。

是什么导致Google AdMob泄露ServiceConnection?

我正在片段中使用AdMob。 有时我会看到以下堆栈 10-23 14:27:38.916: E/ActivityThread(21250): Activity com.applegrew.app.skywifiremote.MainActivity has leaked ServiceConnection com.google.android.gms.common.b@420e82e8 that was originally bound here 10-23 14:27:38.916: E/ActivityThread(21250): android.app.ServiceConnectionLeaked: Activity com.applegrew.app.skywifiremote.MainActivity has leaked ServiceConnection com.google.android.gms.common.b@420e82e8 that was originally bound here 10-23 14:27:38.916: E/ActivityThread(21250): at android.app.LoadedApk$ServiceDispatcher.(LoadedApk.java:979) 10-23 14:27:38.916: E/ActivityThread(21250): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:873) 10-23 14:27:38.916: E/ActivityThread(21250): at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1690) 10-23 14:27:38.916: E/ActivityThread(21250): at android.app.ContextImpl.bindService(ContextImpl.java:1673) 10-23 14:27:38.916: E/ActivityThread(21250): at […]

用ViewPager中的另一个片段替换片段

我正在使用ViewPager和FragmentPagerAdapter来托管三个不同的片段 [Fragment1][Fragment2][Fragment3] 我想要实现的是如果特定任务成功,用一个全新的片段Fragment4成功替换Fragment1。 我用的时候.. FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.fragment1_layout_id, fragment4); transaction.commit(); ..片段被精美地替换,片段4被显示而不是片段1。 虽然只要我一直滑到Fragment3然后再回到Fragment4,Fragment1就会卷土重来。 然后,如果我使用.. FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.remove(fragment1); transaction.commit(); ..Fragment1被删除,当我回来时Fragment4就在那里。 所以这个解决方案的问题是我找不到立即显示Fragment4的方法,因为Fragment1被删除了,即使我尝试过: transaction.add(fragment4); transaction.show(fragment4); 这就是我的FragmentPagerAdapter实现目前的样子, 没有任何事务管理 : public static class PagerAdapter extends FragmentPagerAdapter { public PagerAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return VIEW_COUNT; […]

如何在Fragment中的WebView中添加“Go Back”function?

更新:解决了! 问题与我的Viewpager而不是WebView有关。 我正在尝试在我的WebView添加一个“Go Back”function,它位于Fragment 。 但我无法弄清楚如何: public final class TestFragment extends Fragment { static WebView mWeb; private View mContentView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mContentView = inflater.inflate(R.layout.webview, null); mWeb = (WebView)mContentView.findViewById(R.id.webview); WebSettings settings = mWeb.getSettings(); settings.setJavaScriptEnabled(true); settings.setSupportZoom(false); mWeb.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); mWeb.getSettings().setBuiltInZoomControls(false); mWeb.loadUrl(“myurl…”); mWeb.setOnKeyListener(new OnKeyListener(){ public boolean onKey(View v, int keyCode, KeyEvent event) […]

Android ViewPager和TabLayout无法快速运行

有TabLayout和ViewPager嵌套片段。 每个片段里面都有listview,所以他们可以一起打电话,现在我遇到了app处理速度慢的问题。 我尝试过一些像凌空图书馆这样的解决方案,但它对我不起作用。 更多我发布我的代码所以请指导我做到最好。 MainTabFragment.java public class MainTabFragment extends Fragment { public static int position_child_tab = 0, three_childs_tab_position = 0; static int count = -1; int position_tab = 0; Bundle args; MyTabLayout myTabLayout; public MainTabFragment() { // Required empty public constructor } /** * Use this factory method to create a new instance of * […]

如何在Android中创建半透明灰色教程叠加层?

你知道当你第一次运行Android设备时(如果你使用模拟器你会看到很多东西),有一个有用的小教程,关于如何使用启动器和添加小部件,等等。我试图找一个例子这在谷歌,但我不能。 我希望你知道我的意思。 这是每一步都有蓝色“好”按钮的那个。 无论如何,我想为我的应用程序创建一个,但我不确定哪个是最好的方法去做。 我是否创建了一个片段,我可以在常规活动的基础上制作半透明片段并让它仅在第一次运行时出现? 我是否为教程的每个部分制作了一个半透明的.png,并将其覆盖在第一次运行的常规启动器活动上? 如果我做后者,我如何调整所有不同的屏幕尺寸? 我可以在Photoshop中将图像渲染为各种尺寸,但这并不能涵盖所有尺寸。 如果我去片段路线,我可以说“match_parent”而不用担心它。 但后来我必须弄清楚Fragments是如何工作的,而且他们让我感到困惑。

点击片段后面的隐形布局:

我创建了几个片段,然后按以下方式添加第一个片段: mainFragment = (MainFragment) MainFragment.create(); getSupportFragmentManager().beginTransaction() .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right) .add(R.id.content, mainFragment, MAIN_FRAGMENT_TAG) .commit(); 第二个片段以这种方式添加: getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right) //.hide(mainFragment) .add(R.id.content,VenueFragment.create(vid), “Venue Fragment”) .addToBackStack(null) .commit(); setDrawerIndicatorEnabled(false); 现在你看到hide方法没有应用于这个事务,并且VenueFragment被打开了,这种情况下的问题是当VenueFragment打开时(并且它是一个全屏视图)按下这个片段的空部分会调用MainFragment可点击的视图。 我怎么能阻止这个? 如果我使用hide选项,那么它不会发生但是由于某种原因,用于移除MainFragment的animation正在上升并且这会产生奇怪的体验。