Другой макет не отображается при первом запуске приложения - PullRequest
0 голосов
/ 14 октября 2019

Я начинаю изучать android, и у меня возникает эта проблема:

При первом (только первом) запуске моего приложения отображается только Activity_main. У него есть панель навигации, но она пуста.

Мое приложение предназначено для аудиокниг. Имеются разделы «Последние аудиокниги», «Избранные аудиокниги», «Сохраненные аудиокниги», «Все аудиокниги». При первом запуске все они пусты.

Приведенный ниже код удалил все, что не относится к макету:

public class MainActivity extends AppCompatActivity {

public static SQLiteHelper sqLiteHelper; 
private Fragment selectedFragment = new BooksLastFragment();

@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
    final int REQUEST_CODE_PERMISSION = 1;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Toolbar toolbar = findViewById(R.id.toolbar);
    if (toolbar != null) {
        setSupportActionBar(toolbar);
        assert getSupportActionBar() != null;
        getSupportActionBar().setDisplayShowTitleEnabled(false);

    }

    BottomNavigationView navigation = findViewById(R.id.navigation);  navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);               getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new BooksLastFragment()).commit();}

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = item -> {
            switch (item.getItemId()) {
                case R.id.nav_last:
                    selectedFragment = new BooksLastFragment();
                    break;
                case R.id.nav_favourites:
                    selectedFragment = new BooksFavouritesFragment();
                    break;
                case R.id.nav_all:
                    selectedFragment = new BooksAllFragment();
                    break;
                case R.id.nav_remote:
                    selectedFragment = new GenresFragment();
                    break;
                default:
                    break;
            }
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment).commit();

            return true;
        };

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.toolbar, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    DialogFragment dialogAbout;
    switch (item.getItemId()) {
        case R.id.action_about:
            dialogAbout = new AboutFragment();
            dialogAbout.show(getSupportFragmentManager(), "dialogAbout");
            break;
        default:
            break;
    }

    return super.onOptionsItemSelected(item);
}}}

Изображение:

Первый запуск - enter image description here

После перезагрузки - enter image description here

Извините за плохой английский и плохой код

1 Ответ

0 голосов
/ 14 октября 2019

попробуйте это, и если это поможет, то дайте мне знать. В этом коде я назвал первый фрагмент, который я хотел загрузить впервые, когда мои приложения запускаются в методе onCreate, также проверив значение null. И если вам трудно понять это, дайте мне знать. Happy coding ...

 private Fragment fragment = null;

    @Override
    protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    if (fragment == null) {
                fragment = new BooksLastFragment();;
                loadFragment(fragment);
            }
    }

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.nav_last:
                    Fragment fragment1 =new BooksLastFragment();
                    FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
                    transaction1.replace(R.id.frame_container, fragment1);
                    transaction1.commit();
                    return true;
                case R.id.nav_favourites:
                    Fragment fragment2 =new BooksFavouritesFragment();
                    FragmentTransaction transaction2 = getSupportFragmentManager().beginTransaction();
                    transaction2.replace(R.id.frame_container, fragment2);
                    transaction2.commit();
                    return true;
                case R.id.nav_all:
                    //toolbar.setTitle("Favourite");
                    return true;
                case R.id.nav_remote:
                    //toolbar.setTitle("Profile");
                    return true;
            }
            return false;
        }
    };
private void loadFragment(Fragment fragment) {
        // load fragment
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.frame_container, fragment);
        //transaction.addToBackStack(null);
        transaction.commit();
    }

Это основной макет деятельности:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        app:layout_constraintBottom_toTopOf="@id/navigation"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>


    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="?android:attr/windowBackground"
        android:foreground="?attr/selectableItemBackground"
        app:itemBackground="@color/colorWhite"
        app:itemIconTint="@drawable/bottom_navigation_color_selector"
        app:itemTextColor="@drawable/bottom_navigation_color_selector"
        app:menu="@menu/bottom_nav"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

</android.support.constraint.ConstraintLayout>
...