Intereting Posts
Невозможно выполнить низкоуровневое декодирование видео на Android 4.2 без использования медиа-экстрактора Как добавить прокрутку в представление, когда ориентация экрана изменена на альбомную? Eclipse, новый проект приложения для Android, «следующая кнопка» отключена в разделе, где требуется имя проекта Отображение изображения, загруженного из Интернета как аннотация – использование Picasso Увольнение ProgressDialog в android Перед добавлением содержимого необходимо указать функцию окна, а при создании диалога в фрагменте Android Gradle build и круговая зависимость Вопрос о повороте растрового изображения с Canvas.rotate Метод dispatchKeyEvent дважды Каково главное преимущество и недостаток «не держать действия» в android Студия Android «У вашего приложения нет последних изменений кода ..» Обновить фрагмент при перезагрузке Настраивать маркер изображения, высоту и ширину Android SearchRecentSuggestions – предложения не отображаются при вводе в SearchView Программно создайте приложение FULL SCREEN на Android

Как я могу использовать навигационный ящик без фрагментов?

Я пытаюсь следовать этому руководству о том, как создать навигационный ящик, но я не хочу использовать Фрагменты для отображения нового содержимого после того, как пользователь выберет элемент из списка ящиков. Каков наилучший способ преодолеть эту проблему? Я использую API 10, который не реализует фрагменты.

Solutions Collecting From Web of "Как я могу использовать навигационный ящик без фрагментов?"

Во-первых, API 10 имеет доступ к фрагментам через тот же пакет поддержки Android, который содержит DrawerLayout . Это происходит уже более двух лет, и вы не должны пытаться DrawerLayout с новыми вещами, такими как DrawerLayout если вы не знакомы с тем, что Android имел в течение последних двух лет.

Во-вторых, с DrawerLayout ничего DrawerLayout , связанного с фрагментами. Указание веб-страницы, с которой вы связались :

Когда пользователь выбирает элемент в списке выдвижного ящика, система вызывает onItemClick () в OnItemClickListener, заданном для setOnItemClickListener (). Что вы делаете в методе onItemClick (), зависит от того, как вы реализовали структуру своего приложения.

Если вы внимательно прочтете эти два предложения, вы увидите, что слово «фрагмент» не отображается ни в одном из них. Это потому, что DrawerLayout не привязан к фрагментам. Пример кода, который они показывают, использует фрагменты, но это всего лишь образец кода.

Следовательно, вы можете обновить свой интерфейс, но хотите:

  • Выполнить FragmentTransaction используя FragmentTransaction поддержки Android Support, или
  • Начать действие или
  • setContentView() вызовите setContentView() для вашей существующей активности или
  • В противном случае изменить пользовательский интерфейс существующей деятельности (например, скрыть / показать некоторые виджеты)

Используйте этот код

 private void selectItem(int position) { // Locate Position switch (position) { case 0: startActivity(new Intent(this,TEST.class)); break; 

Вы также можете использовать класс LayoutInflater.

  1. Создайте файл макета xml.
  2. Найдите View для изменения с помощью findViewById.
  3. Удалите всех детей из найденного View с использованием метода .removeAllViews ().
  4. Наполните содержимое макета xml в найденном представлении, используя метод .inflate ().

Это пример:

 LinearLayout layoutToChange = (LinearLayout)findViewById(R.id.layout_to_change); layoutToChange.removeAllViews(); LayoutInflater inflater = LayoutInflater.from(this); LinearLayout newLayout = (LinearLayout)inflater.inflate(R.layout.new_layout, null); layoutToChange.addView(newLayout); 

Базовый ящик без фрагмента

 package xxxxxx; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class loginhome extends AppCompatActivity { private ListView mDrawerList; private DrawerLayout mDrawerLayout; private ArrayAdapter<String> mAdapter; private ActionBarDrawerToggle mDrawerToggle; private String mActivityTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loginhome); Toolbar topToolBar = (Toolbar)findViewById(R.id.toolbar); setSupportActionBar(topToolBar); mDrawerList = (ListView)findViewById(R.id.navList); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); mActivityTitle = getTitle().toString(); addDrawerItems(); setupDrawer(); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } private void addDrawerItems() { String[] osArray = { "Android", "iOS", "Windows", "OS X", "Linux" }; mAdapter = new ArrayAdapter<String>(this, R.layout.drawer_items,R.id.label ,osArray); mDrawerList.setAdapter(mAdapter); mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(loginhome.this, "Time for an upgrade!", Toast.LENGTH_SHORT).show(); } }); } private void setupDrawer() { mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); getSupportActionBar().setTitle("Navigation!"); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { super.onDrawerClosed(view); getSupportActionBar().setTitle(mActivityTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } }; mDrawerToggle.setDrawerIndicatorEnabled(true); mDrawerLayout.setDrawerListener(mDrawerToggle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_help) { Toast.makeText(loginhome.this, "setting", Toast.LENGTH_LONG).show(); } if(id == R.id.action_place){ Toast.makeText(loginhome.this, "Refresh App", Toast.LENGTH_LONG).show(); } if(id == R.id.action_search){ Toast.makeText(loginhome.this, "Create Text", Toast.LENGTH_LONG).show(); } // Activate the navigation drawer toggle if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } } 

draweritems.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000" android:textSize="30sp" android:background="#D3D3D3"> </TextView> </LinearLayout> 

toolbar.xml

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:elevation="4dp" android:id="@+id/toolbar" android:theme="@style/ThemeOverlay.AppCompat.Dark" > </android.support.v7.widget.Toolbar>