我在將sherlockframent中的TextView保存並恢復文本時出現問題,該問題作爲選項卡附加到操作欄中,當我旋轉屏幕時。我重寫的onPause()和onActivityCreated(捆綁savedInstanceState)梅託德在講座敬愛的代碼:在旋轉屏幕時將textview保存在一個片段中
@Override
public void onPause() {
super.onPause();
Bundle outState = new Bundle();
String str = memoryText.getText().toString();
outState.putCharSequence("app.multicalc.basiccalcfragment.save", str);
Log.v("saving", "text saved");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(savedInstanceState!=null){
CharSequence str = savedInstanceState.getCharSequence("app.multicalc.basiccalcfragment.save");
memoryText.setText(str);
savedInstanceState.keySet();
Log.v("restoring", "text restored");}else Log.v("restoring","text not restored");
}
日誌說是文本保存,然後恢復,但在應用程序TextView的旋轉屏幕後清除。我在android編程方面還是個新手,所以也許我錯過了一些東西。 有人可以幫我嗎?
我累了使用setRetainInstance與假和真,但它沒有幫助。另外我onCreateView看起來像這樣:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.basic_calculator, container, false);
setRetainInstance(true);
editText = (EditText) view.findViewById(R.id.txtInput);
memoryText = (TextView) view.findViewById(R.id.txtMemory);
//setting listeners for buttins from layout here
disableSoftInputFromAppearing(editText);
Log.v("basicCreate", "created basic");
return view;
}
我不知道這是否是重要的,但我的MainActivity是:
@Override
protected void onCreate(Bundle savedInstanceState) {
//setTheme(R.style.Sherlock___Theme_DarkActionBar);
setContentView(R.layout.activity_main);
actionBar = getSupportActionBar();
super.onCreate(savedInstanceState);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
getSupportActionBar().setDisplayShowHomeEnabled(false);
getSupportActionBar().setDisplayShowTitleEnabled(false);
tab = actionBar.newTab().setTabListener(new MyTabListener<BasicCalcFragment>(this, "Basic",BasicCalcFragment.class));
tab.setText("Basic");
actionBar.addTab(tab);
tab = actionBar.newTab().setTabListener(new MyTabListener<ScientificCalcFragment>(this, "Scientific",ScientificCalcFragment.class));
tab.setText("Scientific");
actionBar.addTab(tab);
tab = actionBar.newTab().setTabListener(new MyTabListener<ConverterFragment>(this, "Converter",ConverterFragment.class));
tab.setText("Converter");
actionBar.addTab(tab);
if(savedInstanceState!=null){
actionBar.setSelectedNavigationItem(savedInstanceState.getInt("tabState"));
}
}
一點改進解決了由於cYrixmorten響應;)
更新我的回答 – cYrixmorten
我在檢索字符串onActivityCreated –