0

いくつかのビューを持つ LinearLayout があります。私が達成したいのは、この LinearLayout を複製して、いつか使用することです。しかし、 method のように、元の LinearLayout で変更を行うremoveAllViews()と、コピーでも行われます。

例:

Log.d("debug1","1 vc"+variableContent.getChildCount());
this.anticsModulsVisibles = variableContent; //copy of the linearLayout
Log.d("debug1","2 vc"+variableContent.getChildCount());
Log.d("debug1","2.1 amv"+anticsModulsVisibles.getChildCount());
variableContent.removeAllViews(); //i remove the content of the original
Log.d("debug1","3 vc"+variableContent.getChildCount());
Log.d("debug1","4 amv"+anticsModulsVisibles.getChildCount());

そしてログの出力:

1 VC2

2 VC2

2.1 amv2

3 VC0

4 amv0

ご覧のとおり、anticsModulsVisiblesoramvはオリジナルに起こっていることに従っています。

これを避けることはできますか?多分それを「ファイナル」として設定しますか?出来ますか?

ありがとう。

4

1 に答える 1

3

あるオブジェクトへの変更がコピーと思われるものに反映されている場合、問題は 100% コピーではなく、元のオブジェクトへの 2 番目の参照があることです。LinearLayoutメソッドが完全に実装されているかどうかを判断するために掘り下げるか、.clone()手動ですべてのフィールドのコピーを作成する必要があります

于 2013-08-19T15:53:25.100 に答える