Android SherlockNavigationDrawer(实现actionbarsherlock)
我试图修改SherlockNavigationDrawer中的示例。它只有一个片段,但我不知道要添加更多的片段,每个片段都有自己的布局,所有的片段都不一样Android SherlockNavigationDrawer(实现actionbarsherlock),android,android-fragments,actionbarsherlock,Android,Android Fragments,Actionbarsherlock,我试图修改SherlockNavigationDrawer中的示例。它只有一个片段,但我不知道要添加更多的片段,每个片段都有自己的布局,所有的片段都不一样 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout frame = new FrameLayout(this); frame.setId(CONTEN
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frame = new FrameLayout(this);
frame.setId(CONTENT_VIEW_ID);
setContentView(frame, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
if (savedInstanceState == null) {
setInitialFragment();
}
}
private void setInitialFragment() {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(CONTENT_VIEW_ID, MainFragment.newInstance()).commit();
}
但我的想法是在单击主片段内的listview中的项目时调用一个新片段
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mContent.setText(Shakespeare.DIALOGUE[position]);
mActionBar.setTitle(Shakespeare.TITLES[position]);
mDrawerLayout.closeDrawer(listView);
//START A NEW FRAGMENT HERE DEPENDING OF THE POSITION CLICKED
}
}
私有类DrawerItemClickListener实现ListView.OnItemClickListener{
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
mContent.setText(莎士比亚对话[位置]);
mActionBar.setTitle(莎士比亚.TITLES[位置]);
mDrawerLayout.closeDrawer(listView);
//根据单击的位置在此处开始一个新片段
}
}
有什么想法吗?
提前感谢sherlockFragment中的内容,即示例中唯一的片段
public class MainFragment extends SherlockFragment {
Customfragment1 fragment1;
Customfragment2fragment2;
@Override
public void onCreate(Bundle savedInstanceState) {
fragment1 = new ContactsFragment();
fragment2 = new GroupsFragment();
}
private void selectItem(int position) {
FragmentTransaction ft = getSherlockActivity().getSupportFragmentManager().beginTransaction();
// Locate Position
switch (position) {
case 0:
ft.replace(R.id.content_frame, fragment1, "Customfragment1");
ft.addToBackStack("Customfragment1");
break;
case 1:
ft.replace(R.id.content_frame, fragment2, "Customfragment2");
ft.addToBackStack("Customfragment2");
break;
}
ft.commit();
mDrawerLayout.closeDrawer(listView);
}
}
谢谢amalBit,但是你的方法selectItem我已经放在了我的第二个和第三个片段中。。。。它是有效的,但这个解决方案迫使我将代码放入我创建的每个额外片段中,我的意思是,第二个片段,第三个片段
//MainFragment
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mContent.setText(Shakespeare.DIALOGUE[position]);
mActionBar.setTitle(Shakespeare.TITLES[position]);
//mDrawerLayout.closeDrawer(listView);
selectItem(position);
}
}
private void selectItem(int position) {
FragmentTransaction ft = getSherlockActivity().getSupportFragmentManager().beginTransaction();
// Locate Position
switch (position) {
case 0:
ft.replace(666, SecondFragment.newInstance(), "SecondFragment");
ft.addToBackStack("SecondFragment");
break;
case 1:
ft.replace(666, ThirdFragment.newInstance(), "ThirdFragment");
ft.addToBackStack("ThirdFragment");
break;
}
ft.commit();
mDrawerLayout.closeDrawer(listView);
}
//main片段
私有类DrawerItemClickListener实现ListView.OnItemClickListener{
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
mContent.setText(莎士比亚对话[位置]);
mActionBar.setTitle(莎士比亚.TITLES[位置]);
//mDrawerLayout.closeDrawer(listView);
选择项目(位置);
}
}
私有void selectItem(内部位置){
FragmentTransaction ft=getSherlockActivity().getSupportFragmentManager().beginTransaction();
//定位
开关(位置){
案例0:
ft.replace(666,SecondFragment.newInstance(),“SecondFragment”);
ft.addToBackStack(“第二个片段”);
打破
案例1:
ft.replace(666,ThirdFragment.newInstance(),“ThirdFragment”);
ft.addToBackStack(“第三块”);
打破
}
ft.commit();
mDrawerLayout.closeDrawer(listView);
}
是否有机会将此代码移动到控制器MainActivity?是的,谢谢!!它的工作就像一个魅力!!如果我的答案对你有帮助,请勾选…:)或多或少现在的问题是,当我在它们之间导航时,我在堆栈上携带碎片。。。我应该在选择新片段后调用finish()吗?现在我有自己的解决方案,请检查-启动活动和/或片段的示例。