2015-06-14 88 views
0

我使用navigation drawer爲一個項目,一切工作正常,但一個小問題,我總是那arrow顯示不home按鈕。 我嘗試了在文檔,論壇中發現的一切,這裏沒有任何實際工作。主頁按鈕不顯示在導航抽屜android

我試過到目前爲止:

mDrawerToggle.syncState(); 
actionBar.setDisplayShowTitleEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 




@Override 
    public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) { 
     super.onPostCreate(savedInstanceState, persistentState); 
     mNavigationDrawerFragment.getmDrawerToggle().syncState(); 
    } 

ActionBar actionBar = getSupportActionBar(); 


actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
actionBar.setDisplayShowTitleEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 
actionBar.setHomeButtonEnabled(true); 
actionBar.setTitle(mTitle); 

NavigationDrawerFragment:

// Defer code dependent on restoration of previous instance state. 
     mDrawerLayout.post(new Runnable() { 
      @Override 
      public void run() { 
       mDrawerToggle.syncState(); 
      } 
     }); 
+0

你的意思是你看到一個箭頭? –

+0

一直是後退箭頭 – user2137817

+0

當你點擊後退箭頭時會發生什麼? –

回答

0

我一直忙着做一個簡單的應用程序導航drawer..don't使用模板有不贊成的方法.. 這是完全工作..我創造了這個例子..試試這個..

你的主動活動

public class MainActivity extends ActionBarActivity { 

    Toolbar toolbar; 


    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar = (Toolbar) findViewById(R.id.app_toolbar); 
    setSupportActionBar(toolbar); 


    Profile profile = (Profile) getSupportFragmentManager().findFragmentById(R.id.profileFragmentInMain); 
    profile.setUp((DrawerLayout) findViewById(R.id.drawer),toolbar); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    return super.onOptionsItemSelected(item); 
} 

這是你的碎片..

public class Profile extends Fragment { 

ActionBarDrawerToggle drawerToggle; 
DrawerLayout mDrawerLayout; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.profile, container, false); 
    return view; 
} 

public void setUp(DrawerLayout drawerLayout, Toolbar toolbar) { 

    mDrawerLayout = drawerLayout; 
    drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.open, R.string.close){ 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      getActivity().invalidateOptionsMenu(); 
     } 

     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
      getActivity().invalidateOptionsMenu(); 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 

      if (item != null && item.getItemId() == android.R.id.home) { 
       if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { 
        mDrawerLayout.closeDrawer(Gravity.RIGHT); 
       } else { 
        mDrawerLayout.openDrawer(Gravity.RIGHT); 
       } 
       return true; 
      } 
      return false; 
     } 

    }; 
    mDrawerLayout.setDrawerListener(drawerToggle); 


    mDrawerLayout.post(new Runnable(){ 

     @Override 
     public void run(){ 

      drawerToggle.syncState(); 
     } 

    }); 
} 
} 

這是所有類..

現在XML佈局..

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:id="@+id/drawer" 
android:layout_height="match_parent" > 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity"> 

    <include 
     android:id="@+id/app_toolbar" 
     layout="@layout/toolbar"/> 
</LinearLayout> 

<fragment 
    android:id="@+id/profileFragmentInMain" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:layout="@layout/profile" 
    android:name="com.example.ajay.myapplication.Profile" 
    tools:layout="@layout/profile"/> 

</android.support.v4.widget.DrawerLayout> 

您profile.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:theme="@android:style/Theme.Holo.Light.DialogWhenLarge.NoActionBar"> 

</LinearLayout> 

您toolbar.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/app_toolbar" /> 

預覽:

打開抽屜 enter image description here

關閉的抽屜 enter image description here

附加信息:我添加工具欄是材料設計實現關於ActionBar。它創建Actionbar的最新方法。你可以使用它。以防萬一,請在您的styles.xml文件中選擇主題爲NoActionbBar

+0

都由Android工作室模板自動實現 – user2137817

+0

我更新了我的答案..不使用模板..它已被大多棄用的東西..這是drawerlayout與切換工作的簡單示例..我已測試並運行它..完全正常工作.. –

+0

你只需要複製和粘貼它..希望你會學習和嘗試理解。它.. –

0

所以我終於找到了解決方案。我剛剛拍下這個R.drawable.ic_drawer來自:

drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, R.drawable.ic_drawer, R.string.open, R.string.close); 

而且它的功能就像一個魅力。

+0

你的努力被讚賞,我提到,但它不是我所期待的。這個評論是無用的。 – user2137817