我在同一个 Activity 中有两个静态 fragment ,在“fragmentA”中我有一个自定义列表,当一个项目被点击时必须在“fragmentB”中出现一个细节,细节只在我改变屏幕方向时出现,不会自动出现。我在主要 Activity 中使用此代码进行刷新但应用程序重新启动(出现详细信息)。
完成(); 启动 Activity (getIntent());
有人知道一种更好的方法,当我点击“fragmentA”中的某个项目时,在“fragmentB”中自动显示细节,总是在同一个 Activity 中使用两个静态 fragment 。
最佳答案
不要使用静态引用来保存 Fragment
,这是一个非常糟糕的做法。
不要将上下文存储在静态引用中。 Or you could will leak memory .
相反,实现一个接口(interface)
:
//fragment Activity 测试
public class FragmentActivityTest extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentB fragmentB = new FragmentB();
FragmentA fragmentA = new FragmentA();
fragmentA.setFragmentBHandler(fragmentB);
//Perform transactions etc
}
}
//fragment A
public class FragmentA extends Fragment {
private FragmentBHandler _handler;
public void setFragmentBHandler(FragmentBHandler handler) {
_handler = handler;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
((ListView) getView().findViewById(R.id.list_view)).setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
_handler.updateDetail();
}
});
}
}
//fragment B
public class FragmentB extends Fragment implements FragmentBHandler {
@Override
public void updateDetail() {
//do your work
}
}
关于android - 静态 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670759/