0

Fragmentクラスを使用しています。を使用して追加します

  FragmentTransaction fragmentTransaction =      fragmentManager.beginTransaction();


         Search fragment = new  Search(maincontrolActivity.this);

          fragmentTransaction.add(R.id.mainLayout,fragment , "MY_FRAG");
          fragmentTransaction.commit();
          this.FragmentObject = fragment 

コントロールを更新すると、このコードを思い出しますが、渡すthis.FragmentObjectことで、=が同じオブジェクトを参照しているため、ガベージコレクションだと思います。追加すると、同じ古い断片が解放されます。

だから私はディープコピーまたはリフレッシュする方法が必要ですか?

何か案が

4

1 に答える 1

1

Ok。だから私がすることは、Interface定義されており、更新ボタンがクリックされたときのコールバックFragmentのために各レジスタを持っていることです。Activity次に、フラグメント自体でデータを更新します。それが新しいデータを取得することを意味する場合は、に切り替えProgressBar、サーバーからデータを取得して、を再入力しますView。これは、での作成とそれらからのsの呼び出しに関する記事全体です。コードはおおよそ次のようになります... ::InterfaceActivitiesFragmentActivity

public class RefreshActivity extends Activity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        findViewById(R.id.refresh_button).setOnClickListener(this);
    }

    public interface OnRefreshPressedListener {
        public void onRefreshPressed();
    }

    @Override
    public void onClick(View v) {
        ((OnRefreshPressedListener)this.FragmentObject).onRefreshPressed();
    }
}

Fragment:_

public class Search extends Fragment implements OnRefreshPressedListener {

    @Override
    public void onRefreshPressed() {
        //TODO: Refresh your data!

    }

}
于 2012-07-23T18:37:57.957 に答える