【问题标题】:Android Navigation Drawer - Fragment Navigation not working properlyAndroid 导航抽屉 - 片段导航无法正常工作
【发布时间】: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


【解决方案1】:

请更改片段布局 .xml 文件的背景颜色.... 在父布局中片段的布局文件中使用此代码

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_home"
android:background="#FFF"
android:layout_marginTop="50dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">

</RelativeLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    相关资源
    最近更新 更多