1

BeanクラスのオブジェクトをonSavedInstanceに保存し、savedInstanceStateをnullとしてチェックして、onCreateに戻す方法がわかりません。

これまで私はこのコードを試してきましたが、値を保存/取得することはできません:-

public class BookActivity extends Activity{

private ArrayList<Bitmap> bitmaps = null;
private ArrayList<Book> bookData = null;  //Book is the bean class
private TextView bookTitle = null;
private ArrayList<Feature> bookIds = null; // Another bean class

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putSerializable("bookThumb", bookData);
    savedInstanceState.putSerializable("bookBitmaps", bitmaps);
    savedInstanceState.putSerializable("featureBook", bookIds);
  super.onSaveInstanceState(savedInstanceState);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.penguin_main);

    if(savedInstanceState!=null){
    bookData = (ArrayList<String>) savedInstanceState.getSerializable("bookThumb");
    bookData = (ArrayList<String>) savedInstanceState.getSerializable("bookThumb");
    bookData = (ArrayList<String>) savedInstanceState.getSerializable("bookThumb");
    }
    else{
        Toast msg = Toast.makeText(getApplicationContext(), "Values Not Restored!!!", Toast.LENGTH_LONG);
        msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2, msg.getYOffset() / 2);
        msg.show();
        }
}

}

向きの変更時にクラスの新しいインスタンスが作成されないように、ビットマップとBookのオブジェクトを保存するにはどうすればよいですか?

4

1 に答える 1

2

それらをParcelableArrayListsとして保存できます

savedInstanceState.putParcelableArrayList("bookThumb", bookData);
savedInstanceState.putParcelableArrayList("bookBitmaps", bitmaps);
savedInstanceState.putParcelableArrayList("featureBook", bookIds);

ただし、これを機能させるには、クラスBookFeatureクラスを実装する必要がありParcelableます。ビットマップはすでにパーセル可能なクラスです

于 2012-04-30T13:17:15.837 に答える