小编luj*_*jop的帖子

操作栏进度指示器和刷新按钮

是否可以显示进度指示器(使用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)显示的进度指示器代替刷新按钮?

这个想法是像Gmail客户端一样工作:当没有加载show refresh按钮时和加载时显示刷新按钮位置的不确定微调器

android android-actionbar

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

在Kotlin中使用@ClassRule

在JUnit中,您可以使用@ClassRule注释静态字段.我怎么能在Kotlin做到这一点?

我试过了:

object companion {
    @ClassRule @JvmStatic
    val managedMongoDb = ...    
}

and 

object companion {
    @ClassRule @JvmField
    val managedMongoDb = ...    
}
Run Code Online (Sandbox Code Playgroud)

但最后一个都没有,因为规则没有执行.

我仔细检查了完全相同的规则在没有静态上下文的情

@Rule @JvmField
val managedMongoDb = ...
Run Code Online (Sandbox Code Playgroud)

junit4 kotlin

20
推荐指数
1
解决办法
3349
查看次数

自动片段还原的工作原理

使用FragmentActivity它时会自动恢复片段状态并重新创建所有片段.

我知道这主要是为了保存状态onSaveInstanceState,然后在活动中恢复onCreate.看一下代码,我看到所有片段都被重新创建(或者只有在retainInstance为真时才附加)并添加到了FragmentManager但是我不清楚它们以哪种方式添加到视图中,因为视图不是自动的恢复.

我最初的问题是,我得到了一些类似于其他问题的碎片重复.我的工作原则是onCreate:

   Fragment f = fm.findFragmentByTag(tagName);
   if(f==null) {
       f = createFragment();
       fm.beginTransaction().add(R.id.myContainer,f,tagName).commit();
   }  else {
     //Nothing it's on the view
   }
Run Code Online (Sandbox Code Playgroud)

现在它有效,但我仍然不完全理解它是如何工作的.

我的怀疑是:

  • 在哪一刻以及片段如何附加到视图?我已经尝试该片段恢复在做onCreateFragmentActivity.但是如果我setContentView在那之后打电话,片段如何附加到视图?
  • 我可以在不覆盖的情况下阻止碎片娱乐onSaveInstanceState吗 因为由于具有不同数量的片段的不同方向布局,我的初衷是仅重新创建标记为保留的一个状态片段,而不恢复未标记为保留的其他视图片段.

android android-fragments android-orientation

19
推荐指数
1
解决办法
3290
查看次数

样式ActionBar下拉菜单

我正在使用继承自己的自定义主题,DarkActionBar我想将自定义下拉菜单设置为白色,就像使用Light Holo主题一样.

我已经能够使用以下方法将背景更改为白色:

<style name="MyTheme" parent="@style/Theme.Light.DarkActionBar">
    <item name="android:actionDropDownStyle">@style/MyDropDownNav</item>
</style>
<style name="MyDropDownNav">
    <item name="android:background">@drawable/spinner_background_white</item>
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_whyite</item>
    <item name="android:dropDownSelector">@drawable/selectable_background_white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但我没有任何关于如何将文字颜色改为黑色的线索.因为在设置白色drawable之后问题是文本不可见因为在白色背景是白色的.

android android-theme

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

使用未收到的消息调试RxJava问题的最佳方法是什么

我有一个Android应用程序,其中有多个A类观察者订阅了几个类型为B的Observable.订阅在IO Scheduler中完成,并在Android主线程上观察.

问题是我在一些工作之后随机发现 B发出的一条消息从未在A中收到过,经过几个小时的重新调整后我无法找到原因.

问题发生时的相关代码:

"NEXT1"和"NEXT2"被打印但"收到","错误","完成"不是.

            //The subscription
            B.getMessate()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(A);

            //B
            Observable<msg> getMessage() {
                 return Observable.create(new Observable.OnSubscribe<msg>() {    
                      public void call(Subscriber<? super msg> subscriber) {
                         ...
                         subscriber.onNext(msg)
                         println("NEXT1")
                      }
                 }).doOnNext({ (o) -> println("NEXT2")});
            }



            //A 
            onNext(msg) {
                  //Never called when problem happens
                  println("RECEIVED")
            }
            onError(msg) {
                  //Never called when problem happens
                  println("ERROR")
            }
            onError(msg) {
                  //Never called when problem happens
                  println("COMPLETED")
            }
Run Code Online (Sandbox Code Playgroud)

任何人都有一些线索?或任何调试建议?

我检查了什么:

  • 我暂停了应用程序并检查了所有线程以查看是否已锁定.并且所有工作线程都被停放,主线程正在等待android消息队列中的消息.
  • 观察员从不打电话取消订阅()

multithreading android rx-java

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

在MarshMallow的Widget中显示来自SDCard的图像

在小部件中,我使用SDCard显示图像remoteView.setImageViewUri().除MarshMallow外,此策略正常工作:

错误是:

Unable to open content:  file:///storage/emulated/0/Android/data/applicaitonPackage/files/file.png
open failed: EACCESS (Permission denied)
Run Code Online (Sandbox Code Playgroud)

很明显这是一个权限问题,但我不知道如何赋予窗口小部件容器权限,理论上(参见注释1)图像已经存储在共享存储中.

注1:存储图像的目录是共享存储Environment.getExternalStorageDirectory()

注2:应用程序不适用于MarshMallow并使用targetSdkVersion = 15

注3:不要只回复有关MarshMallow中新的运行时权限的说明.我已经知道权限更改,这不是问题,因为应用程序是针对SDKVersion 15而且应用程序访问外部存储没有任何问题,问题是我自己怀疑没有的小部件容器权限.

android android-widget android-6.0-marshmallow

16
推荐指数
1
解决办法
385
查看次数

在FragmentPageAdapter的中间插入页面

我正在使用ViewPageIndicator中的ViewPager,我需要能够在其他人的中间动态插入一个片段.

我试图用FragmentPagerAdapterFragmentStatePagerAdapter(都来自v4支持代码)管理模型,第一个似乎不管理中间插入页面的任何方式.第二个只有当我做一个天真的getItemPosition实现返回总是POSITION_NONE但这会导致每次刷卡时完全重新创建页面.

我用FragmentStatePagerAdapter(FSP)观察到的问题是这样的:

  • 我从两页开始[A] [B]
  • 然后我在中间插入[C] [A] [C] [B].插入后我调用notifyDataSetchange()
  • 然后FSP为[A]调用getItemPosition并获得0
  • 然后FSP为[B]调用geTItemPosition并得到2.它说......哦,我要销毁[B]并使mFragments.set(2,null)然后因为它只有两个元素在mFragments数组中它会抛出IndexOutOfBoundsException

在代码中查看一下后,似乎提供的fragmentStatePagerAdapter不支持在中间插入.这是正确的还是我错过了什么?

更新: 适配器中的插入是以逻辑方式进行的,当某个编码为真时,页面会增加1.片段创建是使用getItem()中的构造函数以这种方式完成的:

void setCondition(boolean condition) {
   this.condition=condition;
   notifyDataSetChanged();
}
public int getCount(){
    return condition?3:2;
}
public Fragment getItem(int position) {
    if(position==0) 
        return new A();
    else if(position==1)
        return condition?new C():new B();
    else if(position==2 && condition)
        return new B();
    else throw new RuntimeException("Not expected");
}
public int getItemPosition(Object object) {
    if(object instanceof A) return 0;
    else if(object instanceof …
Run Code Online (Sandbox Code Playgroud)

android android-adapter android-viewpager viewpagerindicator

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

Android组件展示/视觉指南

作为Android的新开发者,我错过了文档中的swing组件展示或视觉指南.在某个地方有一个?通常我所做的是使用谷歌图像与组件名称,但视觉指南将更好.

android

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

Chrome中的电子智能卡数字签名

对于在浏览器上运行且需要专业人员签名的电子处方系统,我们使用Java小程序对XML请求进行签名,然后使用智能卡将其发送给WS.

但是自版本42以来,Chrome默认禁用NPAPI支持,并且在2015年9月的未来版本中,它将被完全禁用,然后applet根本不可用.

Chrome NPAPI弃用页面指向WebCrypto和TLS作为替代方案.但似乎WebCrypto 已经超出智能卡的支持范围,并且似乎TLS仅涉及加密协议,并且它没有提供使用电子卡的方法.

有人使用完全浏览器本机解决方案来签署文档并对流程有很好的控制.至少它将是nedeed:

  • 没有确认,也没有用户签名的XML请求的可视化.因为签名是对用户没有价值的内部技术请求,并且应用程序在内部LAN中受控且受信任的系统中运行.

google-chrome npapi smartcard digital-signature webcrypto-api

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

仅合并另一个分支中的一个变更集

我是mercurial的新手,我读到只能从另一个分支合并一个单独的变更集.然后我不知道解决这个问题的最佳方法是什么:

  1. 我从一个稳定的修订版R1开始
  2. 我继续开发R1:CS1,CS2,CS3
  3. 在某些时候,我需要从我的稳定版本R1中解决bug.我想只应用开发线中的一个变更集(fe CS2)

什么是最好的方法?由于合并不起作用,我所做的是制作一个CS2补丁,然后在新的稳定分支中应用补丁来修复错误.那是Mercurial的方式吗?

干杯,

version-control mercurial

12
推荐指数
2
解决办法
9603
查看次数