I know this question has already been asked a lot, but I don\'t get why onSaveInstanceState isn\'t working for me. It\'s probably something stupid, but I hope some of you ca
public class Main extends Activity implements OnClickListener, OnKeyListener {
EditText textitem;
Button buttonadd;
ListView listitems;
ArrayList<String> ToDo;
ArrayAdapter<String> AA;
ArrayList<String> MyArrayList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textitem = (EditText) findViewById(R.id.textitem);
buttonadd = (Button) findViewById(R.id.buttonadd);
listitems = (ListView) findViewById(R.id.listitems);
buttonadd.setOnClickListener(this);
textitem.setOnKeyListener(this);
if(savedInstanceState!=null)
{
ToDo = savedInstanceState.getStringArrayList("MyArrayList");
}
else
{
ToDo = new ArrayList<String>();
}
AA = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, ToDo);
listitems.setAdapter(AA);
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putStringArrayList("MyArrayList", ToDo);
super.onSaveInstanceState(savedInstanceState);
}
private void addItem(String item) {
if (item.length() > 0) {
this.ToDo.add(item);
this.AA.notifyDataSetChanged();
this.textitem.setText("");
}
}
public void onClick(View v) {
if (v == this.buttonadd) {
this.addItem(this.textitem.getText().toString());
}
}
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
this.addItem(this.textitem.getText().toString());
}
return false;
}
Hope this will help you. Vipul
you are saving that in the local variable why ? may try this
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
this.ToDo = savedInstanceState.getStringArrayList("MyArrayList");
}
Usually you restore your state in onCreate. It is possible to restore it in onRestoreInstanceState as well, but not very common. (onRestoreInstanceState is called after onStart, whereas onCreate is called before onStart.
from : onSaveInstanceState () and onRestoreInstanceState ()
You're extracting the saved values in the "onRestoreInstanceState()" callback, but you don't actually do anything with them.
ArrayList<String> ToDo = savedInstanceState.getStringArrayList("MyArrayList");
You need to wrap these values in an adapter and assign it to the list, like you do it in the end of onCreate().