我使用的是ViewPager
与FragmentStatePagerAdapter
让一些片段之间的导航.
比方说,我有三个片段:A
,B
和C
.ViewPager最初显示片段A,并允许您通过从右向左滑动,然后再次滑动到片段C来导航到片段B. 这允许以下导航路径:A <--> B <--> C
.
我想要的是能够在片段A上从左向右滑动并让ViewPager显示片段C,即它表现为循环队列并允许 ... --> C <--> A <--> B <--> C <--> A <-- ...
我不希望片段在其他位置重复(即最终有三个以上的实例).
使用ViewPager可以实现这种包装功能吗?
仅出于测试目的,我允许通过URL下载和安装我的应用APK.下载到手机上后,可以使用Android应用安装程序启动它,用户可以选择将其安装到自己的设备上然后再运行.
考虑我们是否以上述方式下载并运行应用程序.我的应用中的主/启动器活动是登录页面(Activity A
).一旦用户被认证,他们就被带到应用程序的主要区域,例如Activity B
.所以现在这个任务的当前活动堆栈是A > B
.
然后我按下手机上的主页按钮,然后进入Android主屏幕.我通过菜单中的图标重新启动我的应用程序,我被带到了Activity A
,而不是Activity B
.活动堆栈现在是A > B > A
,或者现在有两个单独的任务与活动堆栈A > B
,A
分别.我想要的是Activity B
在我重新启动应用程序时被收回.在这种状态下按回来将带我回去Activity B
.
如果我首先通过安装程序打开应用程序,而不是通过主屏幕/菜单打开应用程序,则只会发生这种不良行为.
我研究了各机制如何开展活动.当我们使用app安装程序时,我们会看到以下日志:
INFO/ActivityManager(XXXX): Starting activity: Intent { dat=file:///mnt/sdcard/download/[my app].apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) }
INFO/ActivityManager(XXXX): Starting activity: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=[my package]/[Activity A] }
Run Code Online (Sandbox Code Playgroud)
通过发射器/主屏幕:
INFO/ActivityManager(XXXX): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=[my package]/[Activity A] }
Run Code Online (Sandbox Code Playgroud)
当使用安装程序启动时,我们看到它正在使用标志0x10000000
,但是当启动器启动时,我们看到它正在使用0x10200000
.它也使用意图类别.
从 …
我正在尝试使用Gradle和Android Gradle插件构建一个Android项目.我想依赖于在外部(maven)存储库中找到的库项目,例如ActionBarSherlock.
根据官方网站,这似乎是可能的:
使用库可以通过以下方式之一完成:
多项目设置.请阅读此处:http://www.gradle.org/docs/current/userguide/multi_project_builds.html
通过诸如maven或常春藤等仓库的依赖关系.
build.gradle的当前内容:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.2'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile 'com.actionbarsherlock:library:4.2.0'
}
android {
target = 'android-16'
sourceSets {
main {
manifest {
srcFile 'AndroidManifest.xml'
}
java {
srcDir 'src'
}
res {
srcDir 'res'
}
assets {
srcDir 'assets'
}
resources {
srcDir 'src'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Gradle 1.2.当我尝试使用时gradle assemble
,我收到以下错误: …
我正在使用的应用程序正在使用Gradle构建.我正在尝试添加Espresso作为仪器测试的依赖项.应用程序本身有一些依赖项,其中一个是Guava 15.0.为了使这个工作,我使用具有显式依赖关系的Espresso版本,并排除捆绑的Guava(使用我自己的).
dependencies {
...
instrumentTestCompile fileTree(dir: 'libs/espresso-dependencies', include: '*.jar')
compile 'com.google.guava:guava:15.0'
...
}
Run Code Online (Sandbox Code Playgroud)
当我尝试构建时gradle connectedInstrumentTest
,我得到与缺少方法和类相关的错误.
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState
at com.google.android.apps.common.testing.ui.espresso.base.InputManagerEventInjectionStrategy.<init>(InputManagerEventInjectionStrategy.java:35)
Run Code Online (Sandbox Code Playgroud)
添加-keep class com.google.common.** { *; }
到我的Proguard配置使一切正常.似乎正在发生的事情是,Proguard只分析主应用程序使用的类,而不是寻找仪器测试依赖项的使用.我的主应用程序未使用但仪器测试所需的方法/类似乎已经过优化.
如何让Proguard保留Espresso及其依赖项所需的Guava类/方法?手动指定它们(有很多用法)似乎不切实际,并且保持所有这些都违背了Proguard的目的.
我正在开发一个应用程序,该应用程序使用Google Play应用程序内结算V3来销售有效期为一段时间的项目.用户进行购买后,我会将购买数据发送到我们的服务器并立即使用,如果成功的话.然后,服务器授予对该特定用户的额外服务的访问权限,直到该期间结束.注意:我没有使用应用内订阅.
我正在测试沙盘模式下测试用户的购买情况,不会付款.他们中的大多数是成功的,这种流程很好.但是,有时,我的购买会立即被Google取消.在我的Google Checkout帐户的订单历史记录中,我看到以下行:
"为了您的保护,Google取消了此订单.该交易被视为欺诈."
即使发生这种情况,我也会看到我收到了"purchaseState": 0
购买数据,表明成功.此外,尝试使用此产品也会导致成功(调用IInAppBillingService.consumePurchase(version, package, token)
返回0).稍后查询我的库存表明我没有购买(因此没有退款/取消),我可以再次自由购买相同的商品.这与正常的,未解除状态的行为相同.
android ×5
gradle ×2
build ×1
dependencies ×1
flags ×1
google-play ×1
guava ×1
maven ×1
task ×1