2016-06-22 7 views
1

キャンバスでは、ユーザーはEditText、ImageViewsなどのビューを作成でき、ビュー内でドラッグアンドドロップすることができます。すべてのこれらのビューは、以下のコードでボタンのクリックにArrayListに追加されます。アンドロイドでビューの配列を保存および取得する

for(int index=0; index<((ViewGroup)mDragLayer).getChildCount(); ++index) { 
        View nextChild = ((ViewGroup)mDragLayer).getChildAt(index); 
        elementList.add(nextChild); 
} 

ユーザーが同じ画面上でですが、それは以下のコードとelementListの助けを借りて、同じビューを移入することが可能です。

for(int i = 0; i < elementList.size(); i++){ 
     mDragLayer.addView(elementList.get(i)); 
} 

質問は、elementListビューを移入するために(アプリを殺害した後、リニューアル)後の段階で使用することができますか。共有設定を使用しようとしましたが、失敗しました。

ご意見をいただければ幸いです。

答えて

1

Androidシステムがあなたのアプリを殺した場合、ビューを保持することはできません。代わりに、それらのビューを再作成するために必要なモデルを永続化することができます。これにはSharedPreferencesまたはデータベースを使用できます。

アクティビティまたはフラグメントコールバックを使用して、再作成が必要な状態があるかどうかを判断し、アプリケーションが終了する前に保存したデータからビュー階層を再作成するための独自のロジックを構築します。非常に正確である必要がある場合は、すべてを再作成することができます。各ビューの位置を保存し、それらの値をレイアウトパラメータに使用してUIを再構築することもできます。

+0

あなたは共有ビューアーに直接テキストビュー情報を保存することはできませんか? – TharakaNirmana

+1

StringまたはString []に変換してTextViewオブジェクトを変換しないと、テキストビュー情報を保存できます。 – Adley

+0

すべてのビュー・オブジェクトは、アクティビティを囲むものと同じライフ・サイクルを持ちます。アクティビティが強制終了されると、ビュー階層全体が強制終了されます。ビューを再作成するために必要なデータを保持することができます。テキスト、位置、色などが可能ですが、ビュー自体を永続化することはできません。再作成する必要があります。 –

関連する問題