你应该如何实现那种例如Honeycomb Gmail客户端使用的滑动?
可以TransactionManager通过添加和删除片段自动处理这个,由于模拟器是幻灯片,所以很难测试这个:)
我正试图弄清楚如何Loaders在Android 3.0中使用,但似乎无法让它工作.文档只描述使用,CursorLoader但我正在使用AsyncTaskLoader.
从文档中看来,您应该只需要实现,AsyncTaskLoader.loadInBackground()但它永远不会被调用getLoaderManager().initLoader(),然后在回调中创建加载器.
我可以看到调试消息说它Created new loader LoaderInfo{4040a828 #0 : ArticleDataLoader{4036b350}}好像是成功创建的.
是否有可能在SDK中破坏了加载器,或者在创建加载器后是否需要调用某些方法?(他们在CursorLoader示例中没有这样做).
编辑:似乎调用forceLoad()返回的Loader initLoader()至少启动加载,但这意味着你无法正确处理旋转:(
android android-3.0-honeycomb android-loadermanager android-loader
我有一个UI,我需要Fragment在横向模式下显示(带有视图),但不能在纵向模式下显示.在纵向模式下,它应该仍然可用,但会使用ListPopupWindow相反的方式显示其结果.
我想我可以通过使用<fragment />横向布局的标签来处理这个问题,同时如果它没有启动(在我们是肖像的情况下)以编程方式创建片段.
只要从横向开始,这种方法就可以正常工作,如果以纵向方式开始,以编程方式创建片段,当您尝试将片段附加到布局时旋转模拟器时,应用程序将崩溃:
java.lang.IllegalStateException:Fragment没有创建视图.在android.app.Activity.onCreateView(Activity.java:4095)
这些文档Fragment.isInLayout()似乎暗示它应该能够以这种方式处理它:
如果布局通过标记包含在活动视图层次结构中,则返回true.当通过标记创建片段时,这将始终为真,除非旧片段从先前状态恢复且未出现在当前状态的布局中.
所以问题是如何正确地做到这一点,或者是否有我遗漏的东西?
更新:
似乎不像isInLayout()现在这样表现.如果已Fragment手动将a 添加到容器,则返回false .
此外,如果您Fragment手动添加到容器,然后将(设备)旋转到不包含该布局的布局,它将崩溃:
引起:java.lang.IllegalArgumentException:在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:722)中找不到片段SearchFragment {4042f868#2 id = 0x7f060011 SearchFragment}的id 0x7f060011的视图
当我使用RelativeLayout与任一fill_parent或wrap_content作为高度和其指定的元件:android:layout_alignParentBottom="true"它被忽略,它是在顶部对齐.将高度设置为RelativeLayout显式值使其有效.有线索吗?
我的代码基本上是免费分配的,但是当60fps时,GC每30秒运行一次.使用DDMS检查应用程序以进行分配显示有很多SimpleListIterator被分配.因为我使用了也有一些东西被分配Exchanger.
SimpleListIterator来自每个循环for (T obj : objs) {}.我的印象是编译器/翻译器会优化那些不使用迭代器来支持它的类型(我基本上只使用ArrayList),但似乎并非如此.
我怎样才能避免分配所有这些SimpleListIterators?一种解决方案是切换到常规循环,for (int i = 0; i < size; ++i) {}但我喜欢每个循环:(
另一种方法是扩展ArrayList,它返回一个Iterator只分配一次的ArrayList .
我一起攻击的第三种方法是使用一个静态辅助函数,它返回一个Collection重用的函数Iterator.我一起攻击了这样的东西,但铸件感觉非常黑暗和不安全.虽然我使用它应该是线程安全的ThreadLocal吗?见下文:
public class FastIterator {
private static ThreadLocal<Holder> holders = new ThreadLocal<Holder>();
public static <T> Iterable<T> get(ArrayList<T> list) {
Holder cont = holders.get();
if (cont == null) {
cont = new Holder();
cont.collection = new DummyCollection<T>();
cont.it = new Iterator<T>();
holders.set(cont);
}
Iterator<T> …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glClearDepthf(1.0f);
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glDepthFunc(GL10.GL_LEQUAL);
//gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
gl.glHint(GL10.GL_POLYGON_SMOOTH_HINT, GL10.GL_NICEST);
}
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
Run Code Online (Sandbox Code Playgroud)
但在Android模拟器中,边缘仍然是严重的锯齿状.解决办法是什么?
是否可以提供Google apps具有真实设备Gmail等所有功能的仿真器映像?
我无法访问2.0设备,这使我几乎不可能开发/调试使用AccountManager等的应用程序.
在谷歌I/O期间的Virgil Dobjanschi谈话中,他提到Services用于进行提取,然后使用回调来通知Activity何时完成.他从未详细说明如何实现此回调,我似乎无法在任何地方找到任何有用的信息.
我想他说你根本不需要实现绑定?
有线索吗?