GVKun编程网logo

IllegalStateException:在具有onActivityResult的onSaveInstanceState之后无法执行此操作

17

本篇文章给大家谈谈IllegalStateException:在具有onActivityResult的onSaveInstanceState之后无法执行此操作,同时本文还将给你拓展@WebMvcTes

本篇文章给大家谈谈IllegalStateException:在具有onActivityResult的onSaveInstanceState之后无法执行此操作,同时本文还将给你拓展@WebMvcTest失败,并出现java.lang.IllegalStateException:无法加载ApplicationContext、activity 中的 onPause () 和 onSaveInstanceState () 解析、Activity的onSaveInstanceState()和 onRestoreInstanceState()方法、android java.lang.IllegalStateException: System services not available to Activities before onCreate等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

IllegalStateException:在具有onActivityResult的onSaveInstanceState之后无法执行此操作

IllegalStateException:在具有onActivityResult的onSaveInstanceState之后无法执行此操作

我是Android开发的新手。我有一个问题。我尝试了最后几个小时,但我无法弄清楚。如果是这样,我有一个很普遍的问题。IllegalStateException:使用ViewPager在onSaveInstanceState之后无法执行此操作,但由于缺少Android开发经验而失败。

这是代码:

    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode == 1) {            if(resultCode == RESULT_OK) {                MyCustomDialogFragment newPopup = new MyCustomDialogFragment();                newPopup.setMyClickListener(MainActivity.this);                FragmentManager fragmentManager = getSupportFragmentManager();                newPopup.show(fragmentManager, "CashReceivePopup");            }        }   }

这是错误:

位于android.os.Handler.dispatchMessage(Handler.java:102)的ActivityThread $
H.handleMessage(ActivityThread.java:1352)位于android.app.ActivityThread.main的android.os.Looper.loop(Looper.java:135)
(ActivityThread.java:5254)at java.lang.reflect.Method.invoke(本地方法)at
java.lang.reflect.Method.invoke(Method.java:372)at
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller
.run(ZygoteInit.java:903)at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)01-04
05:08:59.825 13609-13651 / com.nazmul.aznazgame.bitlife I / CrashlyticsCore
:Crashlytics报告上传完成:5C2EEA4F018E-0001-3529-63E978D09744 01-04 05:08:59.955
13609-13609 / com.nazmul.aznazgame.bitlife I / Process:正在发送信号。PID:13609
SIG:9
1352)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThread.java:5254)在java。
com.android.internal.os.ZygoteInit $
MethodAndArgsCaller.run(ZygoteInit.java:903)处java.lang.reflect.Method.invoke(Method.java:372)处的lang.reflect.Method.invoke(本机方法)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)01-04
05:08:59.825 13609-13651 / com.nazmul.aznazgame.bitlife I /
CrashlyticsCore:Crashlytics报告上传完成:5C2EEA4F018E-0001- 3529-63E978D09744 01-04
05:08:59.955 13609-13609 / com.nazmul.aznazgame.bitlife I /
Process:正在发送信号。PID:13609 SIG:9
1352)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThread.java:5254)在java。
com.android.internal.os.ZygoteInit $
MethodAndArgsCaller.run(ZygoteInit.java:903)处java.lang.reflect.Method.invoke(Method.java:372)处的lang.reflect.Method.invoke(本机方法)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)01-04
05:08:59.825 13609-13651 / com.nazmul.aznazgame.bitlife I /
CrashlyticsCore:Crashlytics报告上传完成:5C2EEA4F018E-0001- 3529-63E978D09744 01-04
05:08:59.955 13609-13609 / com.nazmul.aznazgame.bitlife I /
Process:正在发送信号。PID:13609 SIG:9
在java.lang.reflect.Method.invoke(本机方法)在android.app.ActivityThread.main(ActivityThread.java:5254)处循环(Looper.java:135)在java.lang.reflect.Method.invoke(Method。
java:372)在com.android.internal.os.ZygoteInit $
MethodAndArgsCaller.run(ZygoteInit.java:903)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)01-04
05:08 :59.825 13609-13651 / com.nazmul.aznazgame.bitlife I /
CrashlyticsCore:Crashlytics报告上传完成:5C2EEA4F018E-0001-3529-63E978D09744 01-04
05:08:59.955 13609-13609 / com.nazmul.aznazgame.bitlife I /处理:发送信号。PID:13609
SIG:9
在java.lang.reflect.Method.invoke(本机方法)在android.app.ActivityThread.main(ActivityThread.java:5254)处循环(Looper.java:135)在java.lang.reflect.Method.invoke(Method。
java:372)在com.android.internal.os.ZygoteInit $
MethodAndArgsCaller.run(ZygoteInit.java:903)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)01-04
05:08 :59.825 13609-13651 / com.nazmul.aznazgame.bitlife I /
CrashlyticsCore:Crashlytics报告上传完成:5C2EEA4F018E-0001-3529-63E978D09744 01-04
05:08:59.955 13609-13609 / com.nazmul.aznazgame.bitlife I /处理:发送信号。PID:13609
SIG:9 java:372)在com.android.internal.os.ZygoteInit $
MethodAndArgsCaller.run(ZygoteInit.java:903)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)01-04
05:08 :59.825 13609-13651 / com.nazmul.aznazgame.bitlife I /
CrashlyticsCore:Crashlytics报告上传完成:5C2EEA4F018E-0001-3529-63E978D09744 01-04
05:08:59.955 13609-13609 / com.nazmul.aznazgame.bitlife I /处理:发送信号。PID:13609
SIG:9 java:372)在com.android.internal.os.ZygoteInit $
MethodAndArgsCaller.run(ZygoteInit.java:903)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)01-04
05:08 :59.825 13609-13651 / com.nazmul.aznazgame.bitlife I /
CrashlyticsCore:Crashlytics报告上传完成:5C2EEA4F018E-0001-3529-63E978D09744 01-04
05:08:59.955 13609-13609 / com.nazmul.aznazgame.bitlife I /处理:发送信号。PID:13609
SIG:9 正在发送信号。PID:13609 SIG:9 正在发送信号。PID:13609 SIG:9

答案1

小编典典

您必须super.onActivityResult(requestCode, resultCode,data)onActivityResult()方法中执行任何FragmentTransactions之前先调用,因为该调用是“解锁”
FragmentManager的操作,并指出您处于执行FragmentTransactions的有效状态。

    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // Add this line        super.onActivityResult(requestCode, resultCode, data);        // This all remains the same        if (requestCode == 1) {            if(resultCode == RESULT_OK) {                MyCustomDialogFragment newPopup = new MyCustomDialogFragment();                newPopup.setMyClickListener(MainActivity.this);                FragmentManager fragmentManager = getSupportFragmentManager();                newPopup.show(fragmentManager, "CashReceivePopup");            }        }   }

@WebMvcTest失败,并出现java.lang.IllegalStateException:无法加载ApplicationContext

@WebMvcTest失败,并出现java.lang.IllegalStateException:无法加载ApplicationContext

我无法使带注释的测试@WebMvcTest正常工作。我还配置了spring-cloud-config-server和spring-cloud-
starter,所有带有此批注的Test类似乎都失败了。我有以下控制器测试:

码:

@RunWith(SpringRunner.class)
@WebMvcTest(controllers = UserController.class)
@ActiveProfiles({"dev","native"})
public class UserControllerTest {

    @MockBean
    private UserService userService;
    @Autowired
    private MockMvc mockMvc;
    @Autowired
    private ObjectMapper objectMapper;

    @Test
    public void changePassword() throws Exception {
        given(userService.changePassword(any(),any(),any())).willReturn(true);
        MvcResult result = mockMvc.perform(post(/user/changePassword)
                .param("old","Pa$$W0rd")
                .param("new,"NewPa$$W0rd"))
                .andExpect(status().isOk()).andReturn();
        assertThat(result).isNotNull();
    assertThat(result.getResponse().getContentAsString()).isEqualTo("true");
    }
}

相关控制器:

@RestController
@RequestMapping(/user)
@Log4j2
public class UserController {

    private UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @Timed
    @PostMapping(value = /changePassword)
    public ResponseEntity changePassword(@RequestParam("old") String oldPassword,@RequestParam("new") String newPassword) throws Exception {
        String username = SecurityUtil.getCurrentLogin();
        Boolean result = userService.changePassword(username,oldPassword,newPassword);
        return new ResponseEntity<>(result,HttpStatus.OK);
    }
}

值得一提的是,由于配置了spring-cloud,我还必须更新META-INF /
spring.factories文件并使用以下注释更新主ServerApplication类:

@Configuration
@EnableAutoConfiguration
@SpringBootConfiguration
@ComponentScan(excludeFilters = {@ComponentScan.Filter(type= FilterType.ASSIGNABLE_TYPE,value=AppPropertiesConfiguration.class)})
@ServletComponentScan
@EnableConfigServer
@EnableRetry
@Log4j2
public class ServerApplication {
...
...
}

运行测试后,出现以下错误:

    java.lang.IllegalStateException: Failed to load ApplicationContext

    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
    at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:44)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'reportAdapterController' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\adapter\controller\reports\ReportAdapterController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'uploadReportController' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\web\controller\reports\UploadReportController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'reportService' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\service\reports\ReportService.class]: Unsatisfied dependency expressed through constructor parameter 3; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'managerService' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\service\managers\ManagerService.class]: Unsatisfied dependency expressed through constructor parameter 3; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#35cbeb54' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#35cbeb54': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
    ... 25 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'uploadReportController' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\web\controller\reports\UploadReportController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'reportService' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\service\reports\ReportService.class]: Unsatisfied dependency expressed through constructor parameter 3; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'managerService' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\service\managers\ManagerService.class]: Unsatisfied dependency expressed through constructor parameter 3; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#35cbeb54' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#35cbeb54': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
    ... 43 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'reportService' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\service\reports\ReportService.class]: Unsatisfied dependency expressed through constructor parameter 3; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'managerService' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\service\managers\ManagerService.class]: Unsatisfied dependency expressed through constructor parameter 3; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#35cbeb54' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#35cbeb54': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
    ... 57 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'managerService' defined in file [D:\git\server.management-server\out\production\classes\com\emprepapp\server\service\managers\ManagerService.class]: Unsatisfied dependency expressed through constructor parameter 3; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#35cbeb54' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#35cbeb54': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
    ... 71 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#35cbeb54' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#35cbeb54': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1531)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1276)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
    ... 85 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#35cbeb54': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:448)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299)
    ... 99 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:275)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
    ... 107 more

结论:
经过大量搜索,我得出的结论是,可能必须要@WebMvcTest解决的问题是配置为类@Configuration@EnableConfig服务器的类有问题,但是我尝试过的一切都没有帮助我解决此问题。

activity 中的 onPause () 和 onSaveInstanceState () 解析

activity 中的 onPause () 和 onSaveInstanceState () 解析

    当用户在开启一个新 activity 时,当前的 activity 可能在内存中处于停止状态也可能由于新 activity 需要更多内存而被系统杀掉了,但不论怎样,当用户在新 activity 上按返回键时,他希望看到的是原先的 activity 的界面。原先的 activity 如果是被重新创建,那么它要恢复到用户最后看到它的样子。那么我们怎么做呢?其实也不难,跟据上一节所述,在 onPause () 或 onStop () 或 onDestyroy () 中保存必要的数据就行了。但是现在 google 又冒出一个新的东西:onSaveInstanceState (),观其名可知其意:它是专门用来保存实例状态的,这个 “实例” 不是指的 activity 对象,而是它所在的进程,因为 activity 的销毁是因为它所在的进程被杀而造成的。onSaveInstanceState () 是在系统感觉需要杀死 activity 时调用的,它被传入一个参数:Bundle,这个 Bundle 可以被认为是个 map, 字典之类的东西,用” 键-值” 来保存数据。

    现在又叫人蛋疼了:不是可以在 onPause () 中保存数据吗?为什么又搞出这样一个家伙来?它们之间是省木关系呢?原来 onSaveInstanceState () 的主要目的是保存 activity 的状态有关的数据,当系统在杀死 activity 时,如果它希望 activity 下次出现的样子跟现在完全一样,那么它就调用这个 onSaveInstanceState (),否则就不调用。所以要明白这一点:onSaveInstanceState () 并不是永远都会调用。比如,当用户在一个 activity 上按返回时,就不会调用,因为用户此时明确知道这个 activity 是要被销毁的,并不期望下次它的样子跟现在一样(当然开发者可以使它保持临死时的表情,你非要这样做,系统也没办法),所以就不用调用 onSaveInstanceState ()。现在应该明白了:在 onPause (),onStop () 以及 onDestroy () 中需要保存的是那些需要永久化是数据,而不是保存用于恢复状态的数据,状态数据有专门的方法:onSaveInstanceState ()。数据保存在一个 Bundle 中,Bundle 被系统永久化。当再调用 activity 的 onCreate () 时,原先保存的 bundle 就被传入,以恢复上一次临死时的模样,如果上次死时没有保存 Bundle,则为 null。

      还没完呢,如果你没有实现自己的 onSaveInstanceState (),但是 activity 上控件的样子可能依然能被保存并恢复。原来 activity 类已实现了 onSaveInstanceState (),在 onSaveInstanceState () 的默认实现中,会调用所有控件的相关方法,把控件们的状态都保存下来,比如 EditText 中输入的文字,CheckBox 是否被选中等等。然而不是所有的控件都能被保存,这取决于你是否在 layout 文件中为控件赋了一个名字 (android:id)。有名的就存,无名的不管。

      既然有现成的可用,那么我们到底还要不要自己实现 onSaveInstanceState ()? 这得看情况了,如果你自己的派生类中有变量影响到 UI,或你程序的行为,当然就要把这个变量也保存了,那么就需要自己实现,否则就不需要,但大多数情况肯定需要自己实现一下下了。对了,别忘了在你的实现中调用父类的 onSaveInstanceState ()。

注:由于 onSaveInstanceState () 并不是每次销毁时都会调用,所以不要在其中保存那些需要永久化的数据,执行保存那些数据的最好地方是:onPause () 中。

    测试你程序的状态恢复能力的最好方法是:旋转屏幕,每当屏幕的方向改变时,当前的 activity 就会被系统销毁,然后重新创建(应该是进程被关闭!――不会吧?效率不高哦)。

    (以上内容收集与网络)

Activity的onSaveInstanceState()和 onRestoreInstanceState()方法

Activity的onSaveInstanceState()和 onRestoreInstanceState()方法

@Override
  protected void onRestoreInstanceState(Bundle savedState) {
    super.onRestoreInstanceState(savedState);
    mSeries = (CategorySeries) savedState.getSerializable("current_series");
    mRenderer = (DefaultRenderer) savedState.getSerializable("current_renderer");
  }

  @Override
  protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("current_series", mSeries);
    outState.putSerializable("current_renderer", mRenderer);
  }


Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,

它们不同于onCreate()、onPause()等生命周期方法,它们并不一定会被触发。

当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,

onSaveInstanceState() 会被调用(由运行状态进入暂停状态或停止状态)

但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。

因为在这种情况下,用户的行为决定了不需要保存Activity的状态。

通常onSaveInstanceState()只适合用于保存一些临时性的状态,

而onPause()适合用于数据的持久化保存。

另外,当屏幕的方向发生了改变, Activity会被摧毁并且被重新创建,

如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创建后恢复缓存的数据。


android java.lang.IllegalStateException: System services not available to Activities before onCreate

android java.lang.IllegalStateException: System services not available to Activities before onCreate

java.lang.IllegalStateException: System services not available to Activities before onCreate()
出现这种情况一般是因为 通过使用new关键字实例化Activity类,这样是错误的。因为Activity是系统通过ActivityManagerService创建管理的。 new之后,创建了对象,但没有创建这个Activity,要知道Activity的对象和在Android中真正表示的东西,不是一样的。 对象创建完成后,需要系统对其进行一系列的init和管理。在这个创建的过程中,会回调Acitivity中的onCreate方法,这个方法调用之后,才能说明Activity是创建完成了。
     所以就不能使用new关键字实例化Activity对象,要通过startActivity的方式,实例化这个Activity对象。


原文链接: http://blog.csdn.net/centralperk/article/details/7496877

我们今天的关于IllegalStateException:在具有onActivityResult的onSaveInstanceState之后无法执行此操作的分享已经告一段落,感谢您的关注,如果您想了解更多关于@WebMvcTest失败,并出现java.lang.IllegalStateException:无法加载ApplicationContext、activity 中的 onPause () 和 onSaveInstanceState () 解析、Activity的onSaveInstanceState()和 onRestoreInstanceState()方法、android java.lang.IllegalStateException: System services not available to Activities before onCreate的相关信息,请在本站查询。

本文标签: