Java 来自其他活动的Fragement引用返回null

Java 来自其他活动的Fragement引用返回null,java,android,android-fragments,Java,Android,Android Fragments,在纵向模式下,我在一个新活动中启动一个细节片段,如下所示 fDetail=(HistoryOFragDetail) manager.findFragmentById(R.id.fragment2); if(fDetail!=null&& fDetail.isVisible()) { fDetail.changeData(st); }else{ // portrait Intent

在纵向模式下,我在一个新活动中启动一个细节片段,如下所示

fDetail=(HistoryOFragDetail) manager.findFragmentById(R.id.fragment2);
        if(fDetail!=null&& fDetail.isVisible())
        {
            fDetail.changeData(st);

        }else{ // portrait 

            Intent intent = new Intent(this, HistoryOActFrag.class);
            intent.putExtra("index", st);


            startActivity(intent);
        } 
在纵向模式下,我像这样加载片段

public class HistoryOActFrag extends SherlockFragmentActivity...

@Override
protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.history_actifrag_layout);

Intent intent = getIntent();
String myIndex = intent.getStringExtra("index");

    HistoryOFragDetail f2 = (HistoryOFragDetail)getSupportFragmentManager().findFragmentById(R.id.fragment2);
    f2.changeData(myIndex);



}
布局如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

        <fragment
        android:id="@+id/fragment2"
        android:name="com.myFragTesting.OIn.HistoryOFragDetail"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>
当我在景观中时,我把我的片段保存在一个活动中,参考工作做得很好

我意识到fragment1就在我刚开始的活动中,当我的片段在两个不同的活动中时,我能不能得到一个引用?更好的是,什么是获得f1参考的正确方法


-感谢您的帮助。

当活动正在运行时,您可以使用以下4个步骤将片段添加到其布局中

  • 获取片段管理器的引用
  • 开始一个片段事务
  • 添加片段
  • 提交片段事务

    FragmentManager mFragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = mFragmentManager
            .beginTransaction();
    fragmentTransaction.add(R.id.title_fragment_container,
            new TitlesFragment());
    fragmentTransaction.commit();
    

  • 确保您正在使用提交。

    如果您已启动新活动,则与以前活动(在您的案例中为f1)相关的所有片段在当前活动中都不可用。我想到的最快解决方案是通过intent传输更多参数,这些参数在纵向模式下的详细活动中需要。

    如果只使用xml布局添加片段会怎么样?上述代码中的title_fragment_容器是保存在xml布局中的片段。
    FragmentManager mFragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = mFragmentManager
            .beginTransaction();
    fragmentTransaction.add(R.id.title_fragment_container,
            new TitlesFragment());
    fragmentTransaction.commit();