Sheehan, относительно onRetainNonConfigurationInstance (), ниже - это то, что я сейчас делаю для моего приложения в процессе.У меня есть чувство, что я слишком усложняю это, я думаю, что есть более простой способ;однако, в настоящее время это прекрасно работает для меня:
Итак, в моем классе активности "RotationMenu.java":
private Object catcher;
//lots of non-related code here
//directoryList is a returned list of selected directories, that I wish to
//retain in the event of an orientation state change.
String[] directoryList = new String[arrayList.size()];
arrayList.toArray(directoryList);
//here, I set the class Object catcher to the directoryList
catcher = directoryList;
//rest of non-related code
//this method is called when the orientation changes (for me,
//when I open my Droid's hardware keyboard)
public Object onRetainNonConfigurationInstance()
{
//If I've entered anything into my catcher Object, it will be kept
//across orientation changes.
final Object data = catcher;
return data;
}
Теперь, в моем методе onCreate (BundlevedInstanceState):
//We retrieve the stored Object and cast it to a String array
final Object recipient = (String[]) getLastNonConfigurationInstance();
//in case the state changes again before the code that sets the directories is run
catcher = recipient;
//if there was any stored data, we can now reinstate the list adapter where the
//directoryList was originally being used.
if(recipient != null)
{
returnedDirectories.setAdapter(new ArrayAdapter<String>(
this.getBaseContext(),
R.layout.simple_list_item_small,
(String[])recipient));
}
Опять же, так я сейчас и делаю.Если кто-нибудь знает более эффективный метод, обязательно прокомментируйте.:)