【发布时间】:2017-06-01 14:45:39
【问题描述】:
我设计了导航抽屉应用程序。除片段导航外,所有其他功能均正常运行。
当我尝试从侧面菜单中选择一个项目时,它会在 activity_main 布局顶部显示所选布局。我认为 transition.replace() 方法不起作用或者它没有用所选布局替换当前布局。
这是我的代码
public class MainActivity extends FragmentActivity {
ActionBarDrawerToggle icon;
final String[] listContent ={"Account Setup","Fragment Two",
"Fragment Three","Main Page"};
final String[] fragments ={
"com.strawberryapps.accountsetup.AccountSetup",
"com.strawberryapps.backupnotes.BackupNotes",
"com.strawberryapps.notes.AddNote",
"com.strawberryapps.myapp.MainPage"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> ad = new ArrayAdapter<String> (getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, listContent);
final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
final ListView list = (ListView) findViewById(R.id.drawer);
list.setAdapter(ad);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
drawer.setDrawerListener( new DrawerLayout.SimpleDrawerListener(){
@Override
public void onDrawerClosed(View drawerView){
super.onDrawerClosed(drawerView);
android.support.v4.app.FragmentTransaction transition = getSupportFragmentManager().beginTransaction();
transition.replace(R.id.main, Fragment.instantiate(MainActivity.this, fragments[position]));
transition.commit();
}
});
}
});
}
这是我的 activity_main.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="#FFFFFF"
>
<FrameLayout
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<ListView
android:id="@+id/drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#454545"
android:choiceMode="singleChoice"/>
</android.support.v4.widget.DrawerLayout>
我正在使用 android 4.3 进行开发
【问题讨论】:
-
能否请您也发布activity_main.xml?
-
不确定,但我看到您只是替换了片段,但之前从未添加任何片段!
-
你应该在onItemClick里面有setDrawerListener吗?我不这么认为......在 onItemClick 你应该调用drawer.close或类似的东西并执行片段转换,setDrawerListener 可能应该设置在其他地方......
标签: android android-fragments navigation-drawer