2011-04-03 40 views
8

在我正在编写的应用程序中,有一部分允许您更改窗帘设置。问题在于,该设置在重新创建活动之前不会生效。有没有办法告诉应用程序重新启动使用onResume()方法(希望允许它保存在onSaveInstanceState())的一切?如何在Android中重新启动活动?

+0

你不能只是开始另一个实例,然后打电话给原来的完成? – Blundell 2011-04-03 15:22:34

+0

@Blundell - 诀窍是调用'finish()'_before_开始新的实例。 – 2011-04-03 15:31:12

+0

基本上,我想要做的就是能够从onRestart()方法中调用onCreate()方法。我将如何做,以便onSaveInstanceState()将保存所有内容。因为有了这个,所有的东西都被重置了,因为它是一个全新的活动? – Ephraim 2011-04-03 16:21:24

回答

31

这已经posted before

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

由于API级别11,你也可以叫一个活动的recreate()方法。这不仅更清洁,因为它更少代码,它避免了如果您的活动是由隐式意图启动可能会出现的问题。

+0

基本上,我想要做的就是能够调用onCreate( )方法从onRestart()方法。我将如何做,以便onSaveInstanceState()将保存所有内容。因为有了这个,所有的东西都被重置了,因为它是一个全新的活动? – Ephraim 2011-04-03 16:19:46

+1

程序工作的方式是,你键入一个单词,并在屏幕上,它会给你一个对应于该单词的幕帘编号。如果您要更改设置,则与该单词对应的编号将会更改。问题是,设置不会生效,直到活动重新启动(如果您要更改方向,它将允许设置生效,但它不会以其他方式执行)我想要的是只要程序启动onRestart()方法就能够做到这一点。 (我想让EditText中的文本保持不变,就像onSaveInstanceState())。 – Ephraim 2011-04-04 03:12:29

1

也许你可以像已经演示的那样重新启动活动,但传入一些意图的附加项以在重新启动时将字符串发回。

Intent intent = getIntent(); 
intent.putExtra(STRINGTOSAVE, "Save this string"); 
finish(); 
startActivity(intent); 

,并在您的onCreate当然你会想检索字符串

Intent intent = getIntent(); 
String STRINGTOSAVE = intent.getStringExtra(ActivityName.STRINGTOSAVE); 

,然后使用检索到的字符串重新申请文本字段,你需要任何其他操作。