小编Zso*_*agy的帖子

如何调用ActionBar的类似ContextMenu的行为?

在Android 3.0的,当你选择,例如一些文本,将动作条切换到文本菜单式模式,使您能够与所选文本做的动作:复制/股/ etc和"完成"按钮将出现在左侧使用户能够离开此模式.

如何在我的应用程序中将ActionBar切换到此模式(当然是我的菜单项)?我在文档中找不到这个.

android android-3.0-honeycomb contextual-action-bar

17
推荐指数
3
解决办法
1万
查看次数

Android - 是否有一个在onResume()后立即调用的回调?

是否有一个总是在onResume()之后调用的回调?我需要它,因为AFAIK,在onResume()之后,布局中的每个View都被渲染了,所以我可以测量它们的尺寸.

谢谢.

android android-ui

17
推荐指数
1
解决办法
1万
查看次数

如何通过片段获得有关异步任务结果的通知?

我有一个使用片段的Activity.根据用户的交互,这些片段可能会来来去去.其中许多片段将作业发送到IntentService,这样就可以以异步方式运行.IntentService应该如何报告这些工作的结果?

启动该作业的片段可能不存在.如果作业完成且起始片段当前处于活动状态,则应该收到相关通知,并采取相应措施.如果不是,那么就不需要采取任何行动.

我曾考虑使用广播意图和BroadcastReceiver组件,但片段不能注册接收者,只能注册活动.

你会建议什么解决方案?

android android-fragments android-3.0-honeycomb

15
推荐指数
1
解决办法
9224
查看次数

是否应该使用Loaders访问Web服务?

据我所知,Loader框架适用于访问ContentProvider/SQLite数据库中本地存储的数据.我们有CursorLoader类可以很好地处理这个用例.

但我想知道使用Loader框架编写扩展Loader/AsyncTaskLoader以访问远程Web服务(例如REST Web服务)的类是否切实可行?我一直认为这个框架对于这个用例来说有点过于僵化和混乱(缺乏适当的文档).我更喜欢使用AsyncTasks/Services以更常规的方式处理REST调用.但最近我发现一些使用AsyncTaskLoaders的文章并开始怀疑.

那么为什么有人会使用Loaders来访问Web服务呢?我在这里看到的唯一优势是装载机自动保留其结果.之后没有Cursor可以管理.

android android-loadermanager android-loader

15
推荐指数
1
解决办法
7651
查看次数

有没有办法在一个项目中使用Roboguice和ActionbarSherlock?

我想在一个项目中使用标题中提到的库.

但是,两者都需要我的活动从一个特殊的Activity类扩展:在Roboguice的情况下它是RoboAcitivity,它是ActionbarSherlock的FragmentActivity.

ActionbarSherlock扩展了兼容性库,这很好,因为我还需要使用片段,而项目级别是<API级别11.

有人有成功吗?由于Java不支持多重继承(通常这是一件好事),我试图在ActionbarSherlock项目中使用FragmentActivity来扩展RoboActivity而不是标准的Activity.但我无法通过这种方式进行编译.

控制台输出的一部分是:

[2011-10-15 17:46:31 - RetainFragmentTest2] /Users/scythe/JavaLibs/JakeWharton-ActionBarSherlock-a4855d0/library/res/values-v11/abs__styles.xml:170: error: Error: No resource found that matches the given name: attr 'android:logo'.
[2011-10-15 17:46:31 - RetainFragmentTest2] /Users/scythe/JavaLibs/JakeWharton-ActionBarSherlock-a4855d0/library/res/values-v11/abs__styles.xml:171: error: Error: No resource found that matches the given name: attr 'android:navigationMode'.
[2011-10-15 17:46:31 - RetainFragmentTest2] /Users/scythe/JavaLibs/JakeWharton-ActionBarSherlock-a4855d0/library/res/values-v11/abs__styles.xml:174: error: Error: No resource found that matches the given name: attr 'android:progressBarPadding'.
[2011-10-15 17:46:31 - RetainFragmentTest2] /Users/scythe/JavaLibs/JakeWharton-ActionBarSherlock-a4855d0/library/res/values-v11/abs__styles.xml:176: error: Error: No resource found that matches the given name: attr 'android:subtitle'.
[2011-10-15 17:46:31 - RetainFragmentTest2] /Users/scythe/JavaLibs/JakeWharton-ActionBarSherlock-a4855d0/library/res/values-v11/abs__styles.xml:177: error: Error: …
Run Code Online (Sandbox Code Playgroud)

android android-library actionbarsherlock

13
推荐指数
2
解决办法
5149
查看次数

将下载的JSON数据缓存到SQLite数据库 - 这是一个好主意吗?

在我的应用程序中,我必须从众多Web服务下载JSON数据.我使用的数据类相当复杂(很多属性,非常深的继承树等).

我打算使用单个db表进行缓存,我将下载的JSON数据存储在VARCHAR列中(以及包含其他元数据的列).JSON序列化正在使用Gson库完成.

将实例转储到JSON中并在以后需要时再次解析它们似乎很方便.无需为每个类创建自定义表,也无需编写大量自定义序列化代码.此外,我可以通过这种方式对缓存表进行查询.

问题:这种方法无论如何都是反模式的吗?

sqlite serialization android json caching

12
推荐指数
1
解决办法
9980
查看次数

ListView中的ViewPager - 如何锁定滚动轴?

我在ListView的每一行都有一个ViewPager小部件.这提供了类似于架子的UI,因此用户可以在垂直方向上滚动搜索架子,然后在架子的内容中水平滚动.这有效.

但是滚动体验非常糟糕:如果我开始拖动一个架子的ViewPager,水平滚动它,不小心向上/向下拖动一下,然后ListView"陷阱"这个拖动动作,并开始垂直滚动,结束我的水平拖动.在这种状态下,拖动动作不会"返回"到ViewPager,ListView拥有它,就是这样.我必须再次启动另一个拖动操作来影响ViewPager.所以我猜ListView在这些情况下具有优先权.

怎么解决这个问题?我想要完全相反:如果列表行中的ViewPager开始对水平拖动做出反应,那么它应该捕获该动作,并且无论用户如何移动他/她的手指,此拖动都应该停止影响ListView垂直.可以这样做吗?

android android-listview android-viewpager

12
推荐指数
1
解决办法
7768
查看次数

在事务中替换片段时会出现片段后端错误?

这是导致问题的场景:

  1. 我用ViewGroup启动一个Acitivity,它将保存呈现的片段.
  2. 我通过在保存到backstack上的事务中调用.replace()将Fragment A加载到此ViewGroup中.
  3. 我将片段B加载到Viewgroup中,替换片段A.再次,我保存了事务.
  4. 我将设备旋转两次.
  5. 在第二次旋转时,片段A(此时不可见)将抛出NullPointer异常.

片段A抛出此异常,因为我在其onSaveInstanceState()方法中保存了一些视图值(例如EditTexts).看来,在第二次旋转时,系统不会实例化这些视图,所以当我询问它们的值时,我会得到一个NullPointer异常.这可以以某种方式避免吗?或者是在片段交易中使用.replace操作保存在backstack上?

android android-fragments

7
推荐指数
1
解决办法
2535
查看次数

在Google Play应用中,ViewGroup如何显示应用程序热门列表?

Google Play应用程序以类似GridView的方式显示不同类别的顶级列表(屏幕截图).我很确定它不是标准的GridView,因为当我一直滚动到底部时,它会显示一个屏幕范围的"加载"项,据我所知,这是标准GridView无法实现的.

我可以在某个地方找到这个ViewGroup的代码吗?如果不是,那么实现这样一个ViewGroup的最佳方式是什么?我正在考虑使用ListView来处理它,但它需要一个非常混乱的适配器,根据可用的屏幕宽度,将多个列表项放在一行中.

android android-view

7
推荐指数
1
解决办法
3684
查看次数

在RxJava中是否取消订阅线程安全?

假设我有以下RxJava代码(访问数据库,但确切的用例是无关紧要的):

public Observable<List<DbPlaceDto>> getPlaceByStringId(final List<String> stringIds) {
    return Observable.create(new Observable.OnSubscribe<List<DbPlaceDto>>() {
        @Override
        public void call(Subscriber<? super List<DbPlaceDto>> subscriber) {
            try {
                Cursor c = getPlacseDb(stringIds);

                List<DbPlaceDto> dbPlaceDtoList = new ArrayList<>();
                while (c.moveToNext()) {
                    dbPlaceDtoList.add(getDbPlaceDto(c));
                }
                c.close();

                if (!subscriber.isUnsubscribed()) {
                    subscriber.onNext(dbPlaceDtoList);
                    subscriber.onCompleted();
                }
            } catch (Exception e) {
                if (!subscriber.isUnsubscribed()) {
                    subscriber.onError(e);
                }
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

鉴于此代码,我有以下问题:

  1. 如果有人从此方法返回的observable取消订阅(在之前的订阅之后),该操作是否是线程安全的?那么无论调度如何,我的'isUnsubscribed()'检查在这个意义上是否正确?

  2. 有没有更清晰的方法,用更少的样板代码来检查未订阅的状态,而不是我在这里使用的?我在框架中找不到任何东西.我认为SafeSubscriber解决了订阅者取消订阅时不转发事件的问题,但显然没有.

java reactive-programming rx-java

7
推荐指数
1
解决办法
836
查看次数