我一直在寻找如何改变抽屉打开/closures图标(从汉堡到箭头)到简单的后退箭头。 我的应用程序目前只有一个Activity在几个片段之间切换。 在某一点上,我想要在一个主要的片段(即抽屉中的一个片段)和一个分层的片段(即“Add New”片段)之间转换。 在这个新的片段中,我想让工具栏显示后退button而不是抽屉button。 我一直在环顾四周,尝试不同的解决scheme很长一段时间。 这是最值得注意的: 改变抽屉图标背对背箭头 – 我成功地删除了抽屉图标,但是在那里没有….没有。 没有脱字符号,没有后退button,没有图标。 我怀疑这是因为我的活动没有父母,但除了一个廉价的工作(创build另一个活动,作为启动主要活动的父母),我迷失了该怎么做。 在使用片段时,在Android Navigation Drawer图像和Up插入符之间切换 – 与上面类似,但有更多的细节。 最终,图标仍然不会变成后退button。 Android棒棒糖工具栏在打开/closures抽屉和后退button之间切换 – 我发现这很难遵循,但最终抽屉图标可以被挖掘,什么都不做(尽pipe我相信我知道如何使它作为后退button)。 但是,图标不会更改。 目前,我正在考虑创build一个自定义图标,并隐藏和显示(并隐藏/显示原始抽屉图标)的一种漫长而艰巨的方法。 但是,是否有更好的方式来切换抽屉和后退button? 作为一个侧面相关的问题,我一直在看材料devise文档,一些例子在左上angular有一个X. 与实现抽屉和后退/上拉button有什么不同? 谢谢〜 编辑: 我可以弄清楚如何replace图标,但是如何获得点击事件呢? 到目前为止,这是我最好的领导: 无法捕捉工具栏主页button单击事件 我现在试过的: 必要时禁用DrawerToggle(即, mDrawerToggle.setDrawerIndicatorEnabled(useDrawer); ) 在我的NavigationDrawerFragment中添加了onOptionsItemSelected日志,我的Activity以及DialogFragment我正在testing哪些运行如果item.getItemId() == android.R.id.home为true。 这些日志语句都没有closures 为了更好的上下文,我现在有一个全屏幕的片段,在菜单上添加一个“保存”button,并将抽屉图标更改为“X”。 片段可以得到保存菜单事件,但是当轻击X时甚至不能得到活动和抽屉。 EDIT2: 根据要求,这是一些代码。 请注意,这是从这个Github回购 ,我正在积极的工作(注意,我有一些无用的function,这里或那里从快速testing)。 ActivityMain : @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); […]
我在列表中设置自定义标题时遇到了一些麻烦。 我正在用一个自定义适配器创build一个ListFragment。 我有清单工作正常,但我想弄清楚在一个片段的生命周期中附加标题。 我知道在设置适配器之前,必须添加标题。 我尝试在onActivityCreated中添加我的头文件,但每当我的Fragment从后台返回时都会调用它,因为我也在onActivityCreated中设置适配器,所以失败。 我试图将其添加到onCreate中,但是在生命周期的这个阶段,视图层次结构不可用。 我试图将其添加到onCreateView,但我不能将从膨胀返回到ListView的视图。 所以我不能将我的标题添加到一个香草视图。 有什么想法吗?
我正在尝试使用相对布局创build一个非常简单的注册页面。 此注册页面链接到名为RegistrationFragment的片段。 我有这个布局的五个EditText字段:名称,电话号码,电子邮件,密码,并确认密码。 出于某种原因,我可以input文本到密码并确认密码,但每当我尝试input任何文本到其他字段,他们立即崩溃应用程序与IndexOutOfBoundsexception。 这是完整的堆栈跟踪: java.lang.IndexOutOfBoundsException at android.graphics.Paint.getTextRunAdvances(Paint.java:1879) at android.text.TextLine.handleText(TextLine.java:747) at android.text.TextLine.handleRun(TextLine.java:898) at android.text.TextLine.measureRun(TextLine.java:414) at android.text.TextLine.measure(TextLine.java:293) at android.text.TextLine.metrics(TextLine.java:267) at android.text.Layout.getLineExtent(Layout.java:998) at android.text.Layout.drawText(Layout.java:329) at android.widget.Editor.drawHardwareAccelerated(Editor.java:1380) at android.widget.Editor.onDraw(Editor.java:1303) at android.widget.TextView.onDraw(TextView.java:5163) at android.view.View.draw(View.java:14465) at android.view.View.getDisplayList(View.java:13362) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at android.view.View.getDisplayList(View.java:13300) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at android.view.View.getDisplayList(View.java:13300) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at android.view.View.getDisplayList(View.java:13300) at android.view.View.getDisplayList(View.java:13404) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3077) at […]
当我正在关注一个老的教程( Créezdes应用程序灌输Android – > openclassroom )时,我被卡在PreferenceActivity类的这个弃用的方法addPreferencesFromResource(int id) 。 所以我的问题是: 在Android中创build首选项的新方法是什么?
在Android Studio 1.4.1中,我创build了一个新的导航抽屉项目,这是默认的。我的问题是在这个项目中有导航标题图像和名称的nav_header_main.xml文件。 我希望这个图像和名称应该在我的主要类活动中以编程方式设置。 如何做到这一点,我尝试了很多,但应用程序崩溃。 nav_header_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:id="@+id/headerView" android:layout_height="@dimen/nav_header_height" android:background="@drawable/side_nav_bar" android:gravity="bottom" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="@dimen/nav_header_vertical_spacing" android:src="@android:drawable/sym_def_app_icon" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="@dimen/nav_header_vertical_spacing" android:text="Android Studio" android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="android.studio@android.com" /> </LinearLayout> activity_main.xml中 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" […]
我很欣赏在轮换更改上有关AsyncTask的大量发帖。 使用兼容性库时,遇到以下问题并试图closuresDialogFragment中的onPostExecute 。 我有一个AsyncTask显示进度DialogFragment ,然后在onPostExecuteclosures对话框,然后可能会抛出另一个DialogFragment 。 如果进度对话框正在显示,我把应用程序放入后台,我得到了以下的片段: 1) onPause 2) onSaveInstanceState 3) onPostExecute在其中我试图消除和调用一个对话框。 我得到一个IllegalStateException因为我试图有效地提交一个事务,当活动保存了它的状态,我明白这一点。 在我认为(也许不正确),我不会得到一个onPostExecute直到重新创build活动的onPostExecute 。 然而,当把应用程序放到后台时,我认为(当然肯定是错误的) onPostExectute在片段/活动暂停时不会被调用。 我的问题是,我的解决scheme是简单地在onPostExecute中检测到片段/活动已暂停,只需执行我需要在onResume做什么呢? 对我来说似乎有些丑陋。 在此先感谢彼得。 编辑1 需要支持2.1及以上版本 编辑2 我曾考虑使用FragmentTransaction:add显示对话框FragmentTransaction:add和FragmentTransaction:commitAllowingStateLoss但是这不是没有问题。
脚步: 从Fragment或Activity请求许可 在onRequestPermissionsResult()显示DialogFragment 抛出java.lang.IllegalStateException : onSaveInstanceState后无法执行此操作 这是不会发生,当我显示对话后,延迟(使用postDelayed)。 根据http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html )我们可以在onPause()和onStop()之间commit() onStop()没有任何状态丢失或EXCEPTION。 这里是一个示例项目源,日志文件和logging问题的链接。 https://drive.google.com/folderview?id=0BwvvuYbQTUl6STVSZF9TX2VUeHM&usp=sharing 另外我已经打开了一个问题https://code.google.com/p/android/issues/detail?id=190966,但它被标记为WorkingAsIntended,他们build议只是捕捉exception。 但是这并不能解决问题。 我知道解决它的其他方法,但不是这个android的bug? 更新 bug的状态再次被“分配”。 希望很快就能解决。 我的临时解决scheme是 new Handler().postDelayed(new Runnable() { @Override public void run() { // do your fragment transaction here } }, 200);
Android开发人员指南有一个使用片段的体面部分。 一种使用Fragments的方法是没有UI。 有几个参考文献将其用作背景处理的手段,但是Fragments为这一领域带来了什么优势? 我会在哪里select使用线程,AsyncTasks,处理程序等的片段进行后台处理?
我有一个Activity 。 Activity有两个Fragment 。 片段A是菜单。 片段B是细节。 我尝试在片段B中创build其他片段C,因此,活动中有3个片段。 我尝试将片段Breplace为片段D. 我猜片段B和C已经死了。 但这些碎片还活着。 只是片段是onDestroyView()状态。 我想onDestroy()或onDetach() 。 我该怎么做Fragments.onDestroy()或onDetach() ? 我不能销毁或更改Activity 。
我有以下代码工作生成片段,但仅当我将它们添加到存在于我的XML文件中的线性布局。 LinearLayout fragmentsLayout = (LinearLayout) findViewById(R.id.foodItemActvity_linearLayout_fragments); FragmentManager fragMan = getFragmentManager(); FragmentTransaction fragTransaction = fragMan.beginTransaction(); Fragment myFrag= new ImageFragment(); fragTransaction.add(R.id.foodItemActvity_linearLayout_fragments, myFrag , "fragment" + fragCount); fragTransaction.commit(); 现在,如果我想要将该片段添加到XML文件中尚不存在的线性布局,例如 LinearLayout rowLayout = new LinearLayout(); 第2部分: Fragment frag1 = generateAppropriateFragment(type1); Fragment frag2 = generateAppropriateFragment(type2); LinearLayout fragmentsLayout = (LinearLayout) findViewById(R.id.foodItemActvity_linearLayout_fragments); LinearLayout rowLayout = new LinearLayout(this); rowLayout.setId(12345); // add counter to […]