本篇文章给大家谈谈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之后无法执行此操作
- @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之后无法执行此操作
我是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
正常工作。我还配置了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 时,当前的 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()方法
@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
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的相关信息,请在本站查询。
本文标签: