以相同的颜色跟踪Android logcat输出真的很难.是否有更改不同原木颜色的最佳做法?
我发现Gitlab和SourceTree支持每个存储库的图标,使它们更加具体,一目了然.
这怎么可能?
我的应用程序由4个片段组成,作为使用的父片段加载的选项卡FragmentPagerAdapter.
问题是,当我运行应用程序并按下并重新打开应用程序时,我收到此错误日志:
FATAL EXCEPTION: main
java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()' on a null object reference
at android.support.v4.app.FragmentManagerImpl.ensureExecReady(FragmentManager.java:1949)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1965)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:620)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:513)
...
Run Code Online (Sandbox Code Playgroud)
父片段内的代码行是:
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
Run Code Online (Sandbox Code Playgroud)
并ViewPage和Adapter两个不为空!
我必须提到我Fragment的所有生命周期都在管理中,并且在适配器内部发生了null问题!并且当我使用Activityas而不是Fragment!!! 时,同样的适配器工作正常!
android nullpointerexception android-fragments fragmentpageradapter android-support-library
我有一个非常简单的 gradle 项目,当我设置 GitHub Actions CI 时,我遇到了这个错误:
Run ./gradlew clean dependencies
./gradlew clean dependencies
shell: /bin/bash -e {0}
env:
JAVA_HOME: /opt/hostedtoolcache/Java/8.0.222/x64
JAVA_HOME_8.0.222_x64: /opt/hostedtoolcache/Java/8.0.222/x64
/home/runner/work/_temp/8f29e484-fbb4-4e29-a02a-679519aec24c.sh: line 1: ./gradlew: Permission denied
##[error]Process completed with exit code 126.
Run Code Online (Sandbox Code Playgroud) 我将Android Studio更新到3.0 Canary 4之后的所有新版本后出现此错误.(我使用的是v3.0,因为它更快,并且不需要为Kotlin插孔.)
看起来构建流程存在问题,它无法为调试版本和发布版本生成或签署我的APK文件.
我也尝试删除我的debug.keystore,重新启动AndroidStudio和系统(!!!),但它没有解决.
这是一个完整的Gradle日志:
FAILURE: Build failed with an exception.
* What went wrong: Execution failed for task ':chris-app:packageDemoDebug'.
java.io.IOException: Failed to generate v1 signature
* Try: Run with --info or --debug option to get more log output.
* Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':chris-app:packageDemoDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:243)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) …Run Code Online (Sandbox Code Playgroud) 我在我的Android应用程序中使用Dagger2 for DI,并使用此代码将类注入我的Activity中:
@field:[Inject ApplicationContext]
lateinit var context: Context
Run Code Online (Sandbox Code Playgroud)
但是,lateinitKotlin中的原始类型属性不允许使用修饰符(例如Boolean),我该怎么做呢?
@field:[Inject Named("isDemo")]
lateinit var isDemo: Boolean
Run Code Online (Sandbox Code Playgroud)
当我lateinit从这段代码中删除时,我收到此错误Dagger does not support injection into private fields
android dependency-injection kotlin dagger-2 kotlin-lateinit
我有CircleCi的经验:
但我无法使用TravisCi上的相同存储库解决此许可证问题:
https://travis-ci.org/mmirhoseini/fyber_mobile_offers/builds/167852390
这是travis错误日志:
FAILURE:构建因异常而失败.
出了什么问题:配置项目':fyber-app'时出现问题.
您尚未接受以下SDK组件的许可协议:[SDK Patch Applier v1,Google Repository].
在构建项目之前,您需要接受许可协议并使用Android Studio SDK Manager完成缺少的组件的安装.或者,要了解如何将许可协议从一个工作站转移到另一个工作站,请访问http://d.android.com/r/studio-ui/export-licenses.html
我知道这是一个许可证问题,但不知道如何解决它.这是我的.travis.yml文件:
language: android
sudo: required
android:
components:
- tools
- platform-tools
- build-tools-24.0.2
- android-24
- extra-android-m2repository
licenses:
- 'android-sdk-preview-license-.+'
- 'android-sdk-license-.+'
- 'intel-android-extra-license.+'
jdk:
- oraclejdk8
before_install:
- chmod +x gradlew
script:
- ./gradlew build
Run Code Online (Sandbox Code Playgroud) 我在我的git全局配置文件中找到了这个 ~/.gitconfig
...
[commit]
template = {my user root folder}/.stCommitMsg
Run Code Online (Sandbox Code Playgroud)
我不知道用法是什么,而且我的用户根文件夹中没有此名称的文件!
有人知道它是如何工作的吗?是否可以为git提交一个模板?!
我使用MVP方法完成了一些Android应用程序,
但我不确定在同一个包装中放置同一特征的不同层对象是否更好?或者在同一个包中使用图层名称打包所有不同功能的图层项?
(我的意思是这样的)
目前,我遵循第二条规则,但这是最佳做法吗?
编辑:这是我的项目的整个包!:)
我总是onCreate在Activity生命周期内使用方法从保存状态启动或恢复,但最近发现还有另一个onCreate方法,其中包含PersistableBundle:
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
Run Code Online (Sandbox Code Playgroud)
我发现自Android 21以来它已被添加.
有人可以在电话和使用时提供有关此方法的完整信息吗?