2013-04-06 57 views
3

我试了几个小时来保存&恢复TextView和按钮。看来我无法保存TextView,因为“outState”需要一个字符串。使用onSaveInstanceState保存TextView

我犯了一个井字游戏,但我想保存所有的东西时,方向是“风景”

这里是我想要做的一个部分:

private Button lesBoutons[]; 
private Button rejouer; 
private Jeu jeu; 
private TextView leTexte; 
private int[] tabGagne; 
public boolean fini; 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.PutString("savText", leTexte); 
    //TextView savTexte = leTexte; 
    //String phrase=leTexte.toString(); 
    //outState.putString("TEST", phrase); 
    //leTexte.getResources(); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
super.onRestoreInstanceState(savedInstanceState); 
// leTexte.setText(savedInstanceState.getString("TEST")); 
} 

我怎么能保存这个TextViews和所有的按钮?

回答

3

做一个leTexte.getText()。这会让你看到文本,但要确保你先初始化TextView对象。

+0

按钮怎么样? – 2013-04-06 01:44:08

+0

按钮状态是否改变?以同样的方式保存! (按钮扩展TextView) – 2013-04-06 02:00:48

+1

你还需要调用'toString()'方法。 – Sajmon 2013-04-06 08:37:53

6

Android在调用您的活动之前先调用onSaveInstanceState(),以便保存有关应用程序状态的数据。然后您可以在onCreate()onRestoreInstanceState()期间恢复状态。

@Override 
public void onSaveInstanceState(Bundle outState) { 
super.onSaveInstanceState(outState); 
outState.putString("savText", leTexte.getText().toString()); 
//save the state 
//1st parameter is the key 
//2nd parameter is the value 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
super.onRestoreInstanceState(savedInstanceState); 
leTexte.setText(savedInstanceState.getString("savText")); 
//restore it using the key 
} 

也请看下面的链接。

http://developer.android.com/guide/topics/resources/runtime-changes.html

+0

有趣的帖子!根据你指出的文档,在'OnCreate'而不是'onRestoreInstanceState'中恢复'InstanceState'也是很好的。但是,我似乎无法找到首先调用哪一个。你有这个想法吗?我发现这个:http://developer.android.com/guide/components/activities.html#SavingActivityState,但它只是说,OnCreate和OnRestoreInstanceState都会收到这个包。 – ForceMagic 2014-02-18 19:11:20

相关问题