我使用actionbarsherlock.下面的代码片段负责将其背景更改为自定义代码.
<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
<item name="background">@drawable/actionbar_bg</item>
<item name="android:background">@drawable/actionbar_bg</item>
<...>
</style>
<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
<..>
</style>
Run Code Online (Sandbox Code Playgroud)
它适用于actionbarsherlock(在蜂窝下面的版本).但是在ICS中,我在动作栏下面有一个阴影,我不想要.什么样的项目让它消失?
当用户退出我的应用程序并且我不再希望他接收到设备的通知时,我该如何处理这种情况.
我试过了
FirebaseInstanceId.getInstance().deleteToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)
Run Code Online (Sandbox Code Playgroud)
但我仍然收到我的设备的通知registration_id
.
我还确保这是我应删除的令牌:
FirebaseInstanceId.getInstance().getToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)
Run Code Online (Sandbox Code Playgroud)
或者简单地说FirebaseInstanceId.getInstance().getToken()
).
我也尝试过FirebaseInstanceId.getInstance().deleteInstanceId()
,但是下次我打电话给FirebaseInstanceId.getInstance.getToken
我时会收到空(它在第二次尝试时起作用).
我想,在deleteInstanceId
我能够立即getToken()
再次打电话之后,它看起来像是一个黑客.并且还有这个答案表明不应该这样做,但它建议删除显然不起作用的令牌.
那么处理这个问题的正确方法是什么?
我正在尝试实施新的Android Google Maps API(v2).然而,它与SlidingMenu似乎并不顺利.如您所知,MapFragment
实施基于SurfaceView
.问题是SurfaceView
它不喜欢移动它 - 我的意思是把它放在可移动的视图中:
ViewPager
, ScrollView
, ListView
,SlidingMenu
.移动它时,它会在其像素最初放置的位置留下黑洞.它看起来像这样.
通过在其上指定透明背景SurfaceView
或者甚至在其上放置透明可以部分地解决该问题View
.我只是无法想象,如果只是对我来说结果是不可接受的,或者我有一个不同的问题,使它看起来如何.
要查看它的外观,请观看此视频.
(对不起质量,但无论如何都可以轻松看到问题)
当打开时拉开正常的列表视图(橙色屏幕)时SlidingMenu
,动画很流畅.但是一MapFragment
出现,地图上就会出现一些奇怪的刷新/闪烁/同步问题.
在HTC One S和三星Galaxy ACE上测试过.
我解决它的超级疯狂的想法:每次开始动画开始时,截取
拍摄地图的截图是不可能的,但也许有人会从中受到启发.MapFragment
(应该可以使用SurfaceView)并在动画期间将其放置.但我真的不知道该怎么做......
或者也许禁用以其他方式重绘地图,我不知道.
更新:
发现了这个.
看起来SurfaceView可以更改为TextureView以消除这些限制.但由于MapFragment基于SurfaceView,我不知道它是否可以实现.
另一个更新 似乎此问题已在4.1+设备上得到解决.他们只使用了TextureView.但在较低版本中,我们仍然需要使用变通方法.
android surfaceview android-maps mapfragment android-maps-v2
这个问题不再有效.但答案可能仍然对其他人有用,所以我会留在这里.
原始问题:
在11月17日的一篇博文中,谷歌人介绍了期待已久的细粒度依赖管理(以应对dex方法限制).我们有12月8日,我仍然无法下载sdk(6.1是最新的),也没有获得有关如何引入粒度依赖的文档.关于这一个的任何消息?或者在官方发布之前如何获得它?
对于我用Kotlin编写的应用程序,我使用反引号的方法名称进行测试,如下所示:
fun `API login error - don't save token or user`() {
Run Code Online (Sandbox Code Playgroud)
它工作正常,测试编译和工作没有问题,但Android Studio中的Lint将这些方法标记为错误消息Identifier not allowed in Android
.
有没有办法抑制这一点,以便Lint检查通过没有错误,并且在Android Studio中没有标记为红色下划线?
当我尝试编译我的应用程序时,我收到以下错误
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_60\bin\java.exe'' finished with non-zero exit value 2
Run Code Online (Sandbox Code Playgroud)
如果我摆脱Facebook Android SDK它编译没有问题.
我的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21 //tried 19 and 22 changing targetSdkVersion and buildToolsVersion accordingly
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "..."
minSdkVersion 15
targetSdkVersion 21
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
}
...
}
dependencies {
...
compile 'com.facebook.android:facebook-android-sdk:3.23.1' //tried older versions as well
}
Run Code Online (Sandbox Code Playgroud) java android gradle facebook-android-sdk android-gradle-plugin
我想要实现的目标:
我有两个不同的片段.我希望他们两个以两种形式(在列表和地图上)显示相同的数据.我希望他们共享一个Loader(AsyncTaskLoader
特别是).一切正常,但装载机不会重复使用.创建另一个并且数据加载两次.
我所做的:
在Fragment
我使用的LoaderManager lm = getActivity().getSupportLoaderManager();
两个中我实现LoaderCallbacks<ArrayList<Item>>
了所需的方法.在我用两个lm.initLoader(0, args, this);
.
但是当我输出lm.toString()
它时,看起来这些是两个不同的装载机.并且数据被下载两次.
如何从不同的Activity/Fragment重新连接到同一个Loader,而不是从它开始的那个?
应该是可能的,因为无论如何都要将上下文附加到Loader onCreate()
,例如配置更改.
android android-fragments android-3.0-honeycomb android-loadermanager android-fragmentactivity
我从外部服务器检索数据以用于我的Android应用程序.我希望这些数据只能通过我的应用访问.我使用标准的http连接以json格式从apache/php服务器获取数据.我还向服务器发送一些参数来检索相关数据.现在,我打算做的是:
现在,问题是 - 对逆向工程这是一种安全的方法吗?目前我认为没有其他可能获得这些数据.但如果有人能够反编译我的apk,他也将能够检索到这个"someSecretPhrase"(在服务器端很难做到),然后访问服务器,不是吗?这是真正的威胁吗?是否还有其他可能通过服务器验证我的应用程序?
我看了论坛,例如.确定是否从Android应用程序发出HTTP请求?然后适当地回应,但他们没有解释反编译问题.
我想在ActionBar中放置一个不确定的进度条(使用ActionBarSherlock).一切正常,但我希望它成为一个小进度条.我使用以下风格:
<style name="IndeterminateProgress" parent="@android:style/Widget.ProgressBar.Small">
<item name="android:progressBarPadding">32dp</item>
<item name="progressBarPadding">32dp</item>
<item name="android:itemPadding">32dp</item>
<item name="itemPadding">32dp</item>
</style>
<style name="Widget.Styled.ActionBar.Tiles" parent="Widget.Sherlock.Light.ActionBar">
<item name="android:indeterminateProgressStyle">@style/IndeterminateProgress</item>
<item name="android:progressBarPadding">32dp</item>
<item name="progressBarPadding">32dp</item>
<item name="android:itemPadding">32dp</item>
<item name="itemPadding">32dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
问题是我无法在进度条上设置填充.正如你可以在上面看到,我试过的每一个可能的组合itemPadding
和progressBarPadding
等
结果总是一样的:
有任何想法吗?
在我的单元测试中,我使用Kotlin的反引号方法来提高可读性,例如
@Test fun `Foo should return bar`()
Run Code Online (Sandbox Code Playgroud)
它适用于<module>/src/test
目录中的测试,但是当我尝试执行相同操作时,<module>/src/androidTest
我得到一个异常:
Error:java.lang.IllegalArgumentException: bad descriptor: Lcom/packageName/MainActivityTest$Foo should return bar$1;
Error:Execution failed for task ':sample:transformClassesWithDexBuilderForDebugAndroidTest'. > com.android.build.api.transform.TransformException: org.gradle.tooling.BuildException: com.android.dx.cf.iface.ParseException: bad descriptor: Lcom/packageName/MainActivityTest$Foo should return bar$1;
Run Code Online (Sandbox Code Playgroud)
是否有一些技巧可以使它工作?
android ×10
kotlin ×2
android-lint ×1
android-maps ×1
firebase ×1
gradle ×1
java ×1
mapfragment ×1
md5 ×1
php ×1
security ×1
surfaceview ×1
unit-testing ×1