我有一個問題搞清楚如何恢復一個動態創建的Drawable我已經加載到一個方向改變後的DialogFragment。當我想顯示的對話框中,我實例化DialogFragment並設置可繪製這樣:如何在設備旋轉後保留動態創建的Drawable?
DialogStrokeOrder dialog = DialogStrokeOrder.newInstance(gKanjiDiagram);
dialog.show(getActivity().getFragmentManager(), DIALOG_STROKE_ORDER);
gKanjiDiagram
是在我從一個SVG我從應用程序的主擴展文件拉創建一個可繪製。該DialogFragment是超級基本的,因爲它需要做的一切都顯示繪製對象:
public class DialogStrokeOrder extends DialogFragment
{
Drawable gStrokeDiagram;
private static final String TAG = "DialogStrokeOrder";
public static DialogStrokeOrder newInstance(Drawable diagram)
{
DialogStrokeOrder dso = new DialogStrokeOrder();
dso.setDiagram(diagram);
return dso;
}
public void setDiagram(Drawable diagram)
{
this.gStrokeDiagram = diagram;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.kanji_stroke_order);
LayoutInflater inflater = getActivity().getLayoutInflater();
View layout = inflater.inflate(R.layout.dialog_strokeorder, null);
// Display the SVG
ImageView iv = (ImageView) layout.findViewById(R.id.stroke_order_diagram);
iv.setImageDrawable(gStrokeDiagram);
builder.setView(layout);
Dialog dialog = builder.create();
dialog.show();
return dialog;
}
}
我遇到的問題是,旋轉後,對話框仍然可見,但圖中消失。我想要通過將其添加到onSaveInstanceState()
的outState
包中來保留Drawable,但沒有「putDrawable()」方法,所以我不知道該怎麼做。
我有什麼選擇?