BottomNavigationView, переключение между activity

293
18 апреля 2017, 07:42

Здравствуйте Я только начинающий и прошу не судить строго и помочь. Проблема состоит в том, что я имею 5 кнопок на BottomNavigationBar и вопрос в том, как реализовать переключение, то есть чтобы по нажатию кнопки выводилась другая информация, нужно ли создавать другие activity ? Далее привожу код.

package --------;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;

public class Navigation extends AppCompatActivity {

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                return true;
            case R.id.navigation_lists:
                return true;
            case R.id.navigation_sale:
                return true;
            case R.id.navigation_maps:
                return true;
            case R.id.navigation_regulation:
                return true;
        }
        return false;
    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_navigation);
    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}
}

Возможно, это очень просто, но нуждаюсь в помощи. Заранее благодарю.

Answer 1

Активити должна быть одна, в которой внизу находится BottomNavigationView. При нажатии на вкладку должен подменяться Fragment в той части активити, в которой находится изменяемый контент.

<android.support.design.widget.CoordinatorLayout
    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="match_parent">
    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</android.support.design.widget.CoordinatorLayout>

Здесь content - это layout, в который помещается фрагмент (и соответственно подменяется на новый).

Есть и альтернативы фрагментам в виде View-based концепций, например Conductor, но для новичков, полезно сначала поработать именно с фрагментами.

READ ALSO
Как правильно получить массив байт по TCP/IP?

Как правильно получить массив байт по TCP/IP?

Есть сервер, который по команде присылает некоторое количество байтОбъём данных заранее известен - 280 Кбайт

221
Парсинг json в java

Парсинг json в java

Хочу сделать так, чтобы i-тому элементу hostidList соответствовал i-тый host (тип ArrayList)Но проблема в том, что не могу корректно то ли ввести, то ли вывести...

313
Как сравнить String и StringBuffer?

Как сравнить String и StringBuffer?

Нужно определить, является ли введенный текст палиндромомПалиндро́м — буквосочетание, слово или текст, одинаково читающееся в обоих направлениях

248
Кастомные jpa update/delete query

Кастомные jpa update/delete query

Откуда код вызывается:

246