在 Smart Lock 示例应用程序中使用库 com.android.support:design:23.1.1+ 时出现错误
Error occurs when you use the library com.android.support:design:23.1.1+ in Smart Lock sample app
我从 Google 下载了应用程序示例 Smart Lock for passwords。
除了使用库 <= 23.0.1 之外还有其他解决方案吗?
库中有错误?
使用库时出现错误com.android.support:design:23.1.1+:
03-31 09:53:18.828 16779-16779/com.google.codelab.smartlock E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.codelab.smartlock, PID: 16779
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1493)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1511)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:634)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:613)
at com.google.codelab.smartlock.MainActivity.setFragment (MainActivity.java:119)
at com.google.codelab.smartlock.MainActivity.access[=11=]0(MainActivity.java:37)
at com.google.codelab.smartlock.MainActivity.run(MainActivity.java:79)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:design:23.2.1'
compile 'com.google.android.gms:play-services-auth:8.4.0'
testCompile 'junit:junit:4.12'
}
Android compileSdkVersion is the version of the compiler used in
building the Application .The Android Support Library package is a set of code libraries that provide backward-compatible versions of Android framework APIs as well as features that are only available through the library APIs.
对于compileSdkVersion 23可以使用波纹管
调用+
不是好的方法
compile 'com.android.support:design:23.0.0'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:design:23.2.0'
compile 'com.android.support:design:23.2.1'
在 Google 这个例子中,我在 MainActivity 中更改了以下代码,java:
private void setFragment(Intent intent) {
...
if (currentTag == null || !currentTag.equals(tag)) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment, tag)
.commit();
}
}
收件人:
private void setFragment(Intent intent) {
...
if (currentTag == null || !currentTag.equals(tag)) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment, tag)
.commitAllowingStateLoss();
}
}
我从 Google 下载了应用程序示例 Smart Lock for passwords。 除了使用库 <= 23.0.1 之外还有其他解决方案吗?
库中有错误?
使用库时出现错误com.android.support:design:23.1.1+:
03-31 09:53:18.828 16779-16779/com.google.codelab.smartlock E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.codelab.smartlock, PID: 16779
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1493)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1511)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:634)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:613)
at com.google.codelab.smartlock.MainActivity.setFragment (MainActivity.java:119)
at com.google.codelab.smartlock.MainActivity.access[=11=]0(MainActivity.java:37)
at com.google.codelab.smartlock.MainActivity.run(MainActivity.java:79)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:design:23.2.1'
compile 'com.google.android.gms:play-services-auth:8.4.0'
testCompile 'junit:junit:4.12'
}
Android compileSdkVersion is the version of the compiler used in building the Application .The Android Support Library package is a set of code libraries that provide backward-compatible versions of Android framework APIs as well as features that are only available through the library APIs.
对于compileSdkVersion 23可以使用波纹管
调用+
不是好的方法
compile 'com.android.support:design:23.0.0'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:design:23.2.0'
compile 'com.android.support:design:23.2.1'
在 Google 这个例子中,我在 MainActivity 中更改了以下代码,java:
private void setFragment(Intent intent) {
...
if (currentTag == null || !currentTag.equals(tag)) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment, tag)
.commit();
}
}
收件人:
private void setFragment(Intent intent) {
...
if (currentTag == null || !currentTag.equals(tag)) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment, tag)
.commitAllowingStateLoss();
}
}