Android新手,所以我正在編寫小程序以熟悉事情的工作方式。 到目前爲止,讓我頭痛的是在運行時與屏幕旋轉結合創建的視圖。堅持屏幕旋轉的意見
嘗試使用包裹的小運氣之後,我通過在旋轉後重新創建視圖來解決問題。
程序會將輸入的文本作爲TextView添加到EditText下的TableLayout中。
有沒有更好的解決方法呢?我找不到任何「開箱即用」的方法。
public class MWEActivity extends Activity {
TableLayout table;
EditText txtInput;
ArrayList<String> savedEntry = new ArrayList<String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
table = (TableLayout)this.findViewById(R.id.table);
txtInput = (EditText)this.findViewById(R.id.txtInput);
txtInput.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){
TextView newtext = new TextView(getApplicationContext());
newtext.setText(txtInput.getText());
savedEntry.add(newtext.getText().toString());
table.addView(newtext);
txtInput.setText("");
return true;
}
return false;
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putStringArrayList("entry", savedEntry);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
if(savedInstanceState.getStringArrayList("entry") == null){
savedEntry = new ArrayList<String>();
savedEntry.add("Return was NULL");
}else{
savedEntry = savedInstanceState.getStringArrayList("entry");
}
for(String s : savedEntry){
TextView tv = new TextView(getApplicationContext());
tv.setText(s);
table.addView(tv);
}
super.onRestoreInstanceState(savedInstanceState);
}
}
@Knabber:如果你使用的是動態片段,你可以使用'setRetainInstance(true)'獲得android:configChanges'方法的很多好處,而不會帶來大部分伴隨風險。如果你不使用動態片段,你仍然可以使用'onSaveInstanceState()'和'onRetainNonConfigurationInstance()'在活動實例之間移動你的* data *。特別是'onSaveInstanceState()'也可以幫助你在其他情況下,超出配置更改。請使用這些方法之一。 – CommonsWare 2012-01-14 20:23:15
@CommonsWare:你能否發表你的評論作爲答案? – seeker 2012-01-14 23:18:37
@Knabber:接受這個。他的回答是正確的 - 我只是提供了澄清。 – CommonsWare 2012-01-14 23:52:37