Intereting Posts
Отобразить kml-файл с помощью API Android Google Maps v2 без разбора Платформа Android с квадратными кнопками Как вы масштабируете ImageView с помощью ObjectAnimator, но сохраните его положение в макете? Изменить размер Drawable в Android Создание ViewFlipper как главного экрана с помощью MotionEvent.ACTION_MOVE Javascript: Любые способы обхода Chrome для Android, чтобы отключить touchmove и touchhend прослушиватели событий, кроме использования event.preventDefault ()? Не удалось создать папку / файл в файловой системе Android с помощью PCLStorage или Xamarin Forms Labs Android Lollipop – Потяните, чтобы обновить Как добавить текст в edittext в android? Keytool с Android Facebook SDK LinearyLayout не будет изменять размер, если его высота равна 0 Измените значение R.string программно Напишите приложение, которое может использовать плагины Не удается получить карту с помощью Google Maps V2 MapView Автоматическая очистка задач происходит в современных версиях Android?

Боковой экран навигации ActionBarSherlock

Я пытаюсь использовать переключатель ящика в панели действий с помощью sherlock. Это моя основная деятельность:

import uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshAttacher; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.widget.DrawerLayout; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.view.MenuItem; import com.mejorandroid.ejemplo3_clase3.fragments.MainFragment; import com.mejorandroid.ejemplo3_clase3.fragments.TermsFragment; public class MainActivity extends SherlockFragmentActivity implements OnItemClickListener{ private ListView drawer_list; private DrawerLayout drawer_layout; private ActionBarDrawerToggle drawer_toggle; private PullToRefreshAttacher pullToRefreshAttacher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pullToRefreshAttacher = PullToRefreshAttacher.get(this); drawer_list = (ListView) findViewById(R.id.left_drawer); drawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout); ArrayAdapter<String> drawer_adapter = new ArrayAdapter<String>(this, R.layout.drawer_list_item, getResources().getStringArray( R.array.array_drawer_options)); drawer_list.setAdapter(drawer_adapter); drawer_list.setOnItemClickListener(this); selectItem(0); drawer_toggle = new ActionBarDrawerToggle(this, drawer_layout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close){ @Override public void onDrawerClosed(View drawerView) { supportInvalidateOptionsMenu(); } @Override public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } }; drawer_layout.setDrawerListener(drawer_toggle); getSherlock().getActionBar().setDisplayHomeAsUpEnabled(true); getSherlock().getActionBar().setHomeButtonEnabled(true); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawer_toggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); drawer_toggle.onConfigurationChanged(newConfig); } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == android.R.id.home || drawer_toggle.onOptionsItemSelected(item)){ return true; } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getSupportMenuInflater().inflate(R.menu.main, menu); return true; } public PullToRefreshAttacher getAttacher() { return pullToRefreshAttacher; } public void selectItem(int position){ Fragment f; if(position==0){ f = new MainFragment(); }else{ f = new TermsFragment(); } FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction() .replace(R.id.main_content, f) .commit(); drawer_list.setItemChecked(position, true); setTitle(drawer_list.getItemAtPosition(position).toString()); drawer_layout.closeDrawer(drawer_list); } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { selectItem(position); } } 

В методе onOptionsItemSelected:

 @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == android.R.id.home || drawer_toggle.onOptionsItemSelected(item)){ return true; } return super.onOptionsItemSelected(item); } 

Я получил:

Введите описание изображения здесь

Как я могу это исправить??

Это мой main.xml:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"/> <ListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111"/> </android.support.v4.widget.DrawerLayout> 

Solutions Collecting From Web of "Боковой экран навигации ActionBarSherlock"

У меня была такая же проблема, и это работает для меня:

 @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { if (drawer_layout.isDrawerOpen(drawer_list)) { drawer_layout.closeDrawer(drawer_list); } else { drawer_layout.openDrawer(drawer_list); } } return super.onOptionsItemSelected(item); } 

Я не знаю, исправлена ​​ли эта проблема в новейшей версии библиотеки / библиотеки поддержки Sherlock, но обходной путь делает хорошую работу.