Android 两个片段并排出现的问题

Android 两个片段并排出现的问题,android,listview,android-fragments,Android,Listview,Android Fragments,简而言之,这就是我正在进行的事情。 我有两个片段在水平方向(listview和detailview)上显示,一个片段在垂直方向(listview)上显示。 现在,当我的应用程序启动时,如果有否savedInstanceState,我希望它显示列表视图,如果有savedInstanceState,则显示详细视图。你可以在android默认的电子邮件应用程序中看到这个动作,当它在电子邮件上旋转时,不管方向如何 当旋转到垂直方向时,它将显示列表视图。 这是我第一次发帖,我希望我能得到一些帮助,我是新手

简而言之,这就是我正在进行的事情。 我有两个片段在水平方向(listview和detailview)上显示,一个片段在垂直方向(listview)上显示。 现在,当我的应用程序启动时,如果有
savedInstanceState
,我希望它显示列表视图,如果有savedInstanceState,则显示详细视图。你可以在android默认的电子邮件应用程序中看到这个动作,当它在电子邮件上旋转时,不管方向如何

当旋转到垂直方向时,它将显示
列表视图
。 这是我第一次发帖,我希望我能得到一些帮助,我是新手

public class TicketActivityP extends Activity implements OnSelectedListener {

boolean detailPage = false;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    setContentView(R.layout.ticket_view);

    if(savedInstanceState == null) {
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ListFragmentP listFragment = new ListFragmentP();
        ft.add(R.id.displayList, listFragment, "List_Fragment");
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.commit();
    }

    if(findViewById(R.id.displayDetail) != null){
        detailPage = true;
        getFragmentManager().popBackStack();
        DetailFragmentP detailFragment = (DetailFragmentP) getFragmentManager().findFragmentById(R.id.displayDetail);

        if(detailFragment == null){
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.displayDetail, detailFragment, "Detail_Fragment1");
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.commit();
        }
    }

  }
}
看起来我需要在R.id.displayDetail检查中添加一个else语句,然后检查保存的实例,并执行与所选的my相同的代码


谢谢您的帮助,我希望这对其他人有所帮助。

我理解正确了吗:在横向模式下,您同时显示了listview和detailsview,而当您切换到纵向模式时,您将丢失详细信息?是的,我希望显示详细信息而不是列表。您还可以在消息应用程序中看到效果。如果您刚刚打开它,它会显示列表视图,在您单击消息后,它会显示在详细信息视图中,但现在如果您旋转它,它会显示消息,而不是列表。mine在旋转后默认显示列表。您调用
setContentView(R.layout.ticket\u视图)
然后检查
是否(findviewbyd(R.id.displaydeail)!=null)
ticket\u view
是否有具有该id的元素?在我的布局版本中有,但在布局版本中它只是显示列表。我想这和setcontentview有关。
    boolean detailPage = false;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    setContentView(R.layout.ticket_view);

    if(savedInstanceState == null) {
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ListFragmentP listFragment = new ListFragmentP();
        ft.add(R.id.displayList, listFragment, "List_Fragment");
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.commit();
    }


    if(findViewById(R.id.displayDetail) != null){
        Log.d("tap","displayDetail found");
        detailPage = true;
        getFragmentManager().popBackStack();
        DetailFragmentP detailFragment = (DetailFragmentP) getFragmentManager().findFragmentById(R.id.displayDetail);

        if(detailFragment == null){
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            detailFragment = new DetailFragmentP();
            ft.replace(R.id.displayDetail, detailFragment, "Detail_Fragment1");
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.commit();
        }
    }else{

        if(savedInstanceState != null) {
            SQLiteDatabase db = openOrCreateDatabase("acsi2000.db",android.content.Context.MODE_PRIVATE ,null);
            Cursor page_cursor = db.rawQuery("SELECT * FROM tickets WHERE Order_No='" + DetailFragmentP.Order_No + "'",null);
            DetailFragmentP detailFragment = new DetailFragmentP();
            detailFragment.setSMSOContent(page_cursor);
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.displayList, detailFragment, "Detail_Fragment2");
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.addToBackStack(null);
            ft.commit();


        }

    }
}
@Override
public void onSelected(String SMSO) {
    SQLiteDatabase db = openOrCreateDatabase("acsi2000.db",android.content.Context.MODE_PRIVATE ,null);
    Cursor page_cursor = db.rawQuery("SELECT * FROM tickets WHERE Order_No='" + SMSO + "'",null);
    if(detailPage){
        DetailFragmentP detailFragment = (DetailFragmentP) getFragmentManager().findFragmentById(R.id.displayDetail);
        detailFragment.updateSMSOContent(page_cursor);
    }else{
        DetailFragmentP detailFragment = new DetailFragmentP();
        detailFragment.setSMSOContent(page_cursor);
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.replace(R.id.displayList, detailFragment, "Detail_Fragment2");
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.addToBackStack(null);
        ft.commit();
    }
}