我知道片段的视图层次结构必须在onCreateView中膨胀,但onCreateView还有什么其他功能可以等待onActivityCreated?我当前的实现对所有内容使用单独的活动,典型的活动在其onCreate方法中完成大部分工作,包括膨胀视图,设置内容视图,使用数据初始化各种小部件,设置监听器等.
那么这可能会全部转移到onCreateView上,还是应该将某些函数放入onActivityCreated方法呢?
lifecycle android android-lifecycle android-fragments android-activity
我的EditText需要接受输入至少在我的HTC Desire组成部分单词,姓名等,这是困难的,因为键盘要建议和/或纠正一些条目(例如,改变"GOR"到"为").我尝试在视图上设置textNoSuggestions,但这并没有解决它.
任何简单的解决方案?
我在这里已经阅读了类似的问题,但我仍然不清楚几件事情.使用库项目意味着我的整个项目将有两个清单 - 一个用于库,另一个用于"主"应用程序项目 - 我不清楚是什么或哪些有冗余.
我正在开发一个带有"精简"和"付费"版本的应用程序小部件,因此几乎所有代码都在库项目中.作为一个小部件,该库至少会有一个接收器,一个服务,一个配置活动,以及其他一些活动.那么应该在哪里声明这些组件的完整声明 - 包括意图,过滤器等?它们是在库的清单中,还是在应用程序包本身的清单中,引用库中的类(例如android:name ="com.foo.mylibrary.MyService")?
我看过的一些例子似乎在两个清单中都声明了它们,但我怀疑将它们放在一个或另一个中是一个无操作.
android android-manifest android-service android-library android-activity
我的Android应用程序通过使用在用户PC上生成并传输到设备的SQLite数据库来工作.这一切都有效,但我没有预料到拥有大量数据的用户数量.在这些情况下,UI在等待获取数据时非常缓慢.
我已经尝试了一些技巧,我"确定"会加快速度,但似乎没有任何明显的效果.我的查询几乎都非常简单,通常是WHERE子句的单个"col = val"和列中的INTEGER数据.所以我对查询做不了多少.
最新的,我不是SQL专家,无论如何都是在PC上使用"CREATE INDEX"命令,认为这些索引用于加速数据库搜索.索引显着增加了数据库文件的大小,所以我很惊讶它似乎对我的应用程序的速度没有任何影响!在没有索引的情况下花费8秒钟填充的屏幕仍然需要大约8秒钟.我希望能把事情减少至少一半.
我现在想知道的是,如果Android上的SQLite实现完全使用数据库索引,或者我只是通过生成它们来浪费空间.谁能回答这个问题?
还有什么其他的东西可以尝试加快访问速度?
(对于它的价值,在绝对的基础上,用户没有什么可抱怨的.到目前为止,我的最坏情况用户的数据产生了630,000条记录(15个表),所以只有这么多可能!)
Doug Gordon GHCS Systems
你会认为这很容易获得,但我很难找到一个简单的库函数,它将C或C++字符串从ISO-8859-1编码转换为UTF-8.我正在读取8位ISO-8859-1编码的数据,但需要将其转换为UTF-8字符串,以便在SQLite数据库和最终的Android应用程序中使用.
我发现了一种商业产品,但这次超出了我的预算.
我仍然不清楚处理碎片以及我活动中发生的其他事情.以下是堆栈跟踪:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {com.ghcssoftware.gedstar/com.ghcssoftware.gedstar.GedStar}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.ActivityThread.deliverResults(ActivityThread.java:2747)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:2790)
at android.app.ActivityThread.access$2000(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1035)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4028)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1299)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1310)
**at android.support.v4.app.FragmentManagerImpl.popBackStack(FragmentManager.java:471)
at com.ghcssoftware.gedstar.PersonTab$PersonTabFrag.popStack(PersonTab.java:157)**
at com.ghcssoftware.gedstar.PersonTab$PersonTabFrag.fillData(PersonTab.java:165)
at com.ghcssoftware.gedstar.ViewTab.fillData(ViewTab.java:96)
at com.ghcssoftware.gedstar.GedStar.fillData(GedStar.java:589)
at com.ghcssoftware.gedstar.GedStar.onActivityResult(GedStar.java:514)
at android.app.Activity.dispatchActivityResult(Activity.java:4541)
at android.app.ActivityThread.deliverResults(ActivityThread.java:2743) …Run Code Online (Sandbox Code Playgroud) 我的应用程序的新版本的最低SDK为14,所以我认为我可以摆脱我一直用于旧版本的support.v4库.但是,现在看起来我可能不得不使用ViewPager,因此回到包含库.
那么我可以只使用库中与ViewPager相关的类而不必使用现在V14中的本机其他类,例如Fragment(也不必将Activity更改为FragmentActivity)?
我会假设我可以这样做(只使用库中的ViewPager),但想检查以确保.
在我重新发明轮子之前,Android是否有任何设施可以将整数转换为具有多语言支持的序数字符串?也就是说,它会将整数3转换为英语中的"3rd"和法语中的"3eme".
我可以使用一些逻辑以及Android的自动字符串替换来看看如何自己做这个,但是认为这肯定是其他人必须遇到的,而不仅仅是与日期一起使用.
好吧,我用水管冲洗了我的Android开发PC,但也没在意那么多,因为我真的需要这方面,以更新,更快的PC.在这里,我现在使用的是高端Windows 7 64位盒.
Eclipse和所有的Android组件运行起来,但我遇到的麻烦的一件事是如何得到我以前的项目到新的工作区.我从旧磁盘复制了整个旧工作区目录,并将其作为我的Eclipse工作区,但它不会自动查看那里的项目.我试图"从现有来源"创建一个新的Android项目,但它抱怨"重叠项目"或其他一些.
有没有办法把它识别现有的项目文件,或者我应该搬到别的地方,从头开始创建项目,然后复制旧文件放回项目树?或任何其他解决方案?
我有一个视图的XML定义,我将使用addChild添加到更大的容器视图中.它基于a LinearLayout,看起来基本上是这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="52dip"
android:background="@drawable/box_bg"
android:clickable="true"
android:onClick="onTreeBoxClick"
android:orientation="horizontal" >
<ImageView android:id="@+id/box_photo"
android:layout_width="45dip"
android:layout_height="45dip"
...
/>
<RelativeLayout
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
>
Run Code Online (Sandbox Code Playgroud)
(省略剩余 - 可能不相关,因为它基本上按设计工作)
当我创建这些视图时,我发现以下对我来说很奇怪的行为:
在我给视图充气后,getLayoutParameters()返回null.
在我调用addChild()将其添加到其父级之后,getLayoutParameters()返回一个有效的对象.
检查LayoutParameters,我发现宽度和高度都设置为-2(WRAP_CONTENT),这显然不是我在XML文件中指定的.
当我查看随附的ImageView的布局参数时,它会以指定的值读出.
谁能解释一下这里发生了什么?为什么我的指定高度没有被注意到?
这并没有真正影响我,因为父视图是一个自定义视图,其中我使用MeasureSpec等强制子项的最终尺寸,但我还是想了解这一点!