android - 静态 fragment

标签 android android-fragments

我在同一个 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/

相关文章:

java - 在MainActivity android中使用smack API与服务器连接

java - 替换时如何保存 fragment 内容?

java - Android 获取两个日期之间的毫秒差

java - 如何在 jersey web 服务中从 android 读取多部分实体

android - 首选项更改后刷新 fragment

android - 如何将 Activity 放入 fragment 中?

android - 我有一个线性布局和一个框架布局,我在框架布局中膨胀我的 fragment ,如何从 fragment 访问线性布局

android - fragment 相互重叠......并且前一个 fragment 正在点击

java - 开始无流程游戏开发

java - OpenYoutubeActivity : java. lang.NoClassDefFoundError OpenYouTubePlayerActivity