use*_*246 37 java android android-fragments
我知道这些类型的问题已经在这里,但我仍然没有找到这个问题的答案:
这就是我所拥有的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
}
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
.commit();
}
public void onSectionAttached(int number) {
switch (number) {
case 1:
break;
case 2:
break;
case 3:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
还有一些在这里:
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
((MainActivity) activity).onSectionAttached(
getArguments().getInt(ARG_SECTION_NUMBER));
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用导航抽屉中的按钮显示另一个片段.我想使用这个代码,所以请不要给我任何指南或教程制作自己的抽屉..
问题是,放入什么case 1:
case 2:
以及case 3:
我想打开另一个片段?感谢名单.
还有一个问题:
如何添加更多片段和事务?这不起作用 -
Fragment fragment = new MyFragment1();
Fragment frag = new MyFragment2();
FragmentManager fragmentManager = getFragmentManager();
switch(position) {
case 0:
fragment = new MyFragment1();
break;
case 1:
frag = new MyFragment2();
break;
}
fragmentManager.beginTransaction()
.replace(R.id.container, fragment).commit();
Run Code Online (Sandbox Code Playgroud)
}
Dre*_*gen 68
您应该只将switch语句放入onNavigationDrawerItemSelected
方法中.
这样的事情应该有效:
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
Fragment fragment;
FragmentManager fragmentManager = getFragmentManager(); // For AppCompat use getSupportFragmentManager
switch(position) {
default:
case 0:
fragment = new MyFragment1();
break;
case 1:
fragment = new MyFragment2();
break;
}
fragmentManager.beginTransaction()
.replace(R.id.container, fragment)
.commit();
}
Run Code Online (Sandbox Code Playgroud)
这很快就完成了,但我认为它应该有效
小智 8
我解决了这个问题inflater
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView;
switch(getArguments().getInt(ARG_SECTION_NUMBER)) {
case 1:
rootView = inflater.inflate(R.layout.fragment_obj_detail, container, false);
break;
case 2:
rootView = inflater.inflate(R.layout.fragment_obj_list, container, false);
break;
case 3:
rootView = inflater.inflate(R.layout.fragment_obj_list, container, false);
break;
case 4:
rootView = inflater.inflate(R.layout.fragment_about, container, false);
break;
default:
rootView = inflater.inflate(R.layout.fragment_obj_list, container, false);
}
return rootView;
}
Run Code Online (Sandbox Code Playgroud)
你需要在switch
里面创建一个块,onNavigationDrawerItemSelected(
然后使用已经存在的代码,而不是case
使用相应Fragment
的代码PlaceholderFragment
.现在,它包含一个通用的代码片段,用于添加PlaceholderFragment
布局,将其重用于您的目的.
归档时间: |
|
查看次数: |
68779 次 |
最近记录: |