0

我正在使用片段类。我添加它使用

  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

好的。所以我要做的是定义一个,并在单击刷新按钮时Interface让每个Fragment寄存器都带有一个回调。Activity然后在片段本身中刷新其数据。如果这意味着要获取新数据,请切换到 a ProgressBar,从服务器获取数据,然后重新填充Views。这是一篇关于在其中创建Interfaces并从中Activities调用s 的整篇文章。这大致是您的代码的Fragment样子......Activity

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 回答