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