Почему блоку навигации не требуется заполнитель, а вкладка «Активность» создаст заполнитель? - PullRequest
0 голосов
/ 02 мая 2019

Я следую учебному пособию, в котором содержится

  • основное действие с макетом фрагмента и 3 фрагментами,
  • действие с навигационным блоком и
  • действие с вкладкой.

В этом видео, когда гид добавит действие «Ящик навигации», Studio автоматически создаст PlaceHolderFragment.java, чего не было при добавлении.Поэтому я помещаю все onClickListener в Navigation_Activity.java, и это работает.

И затем я добавляю Tab Activity, которая автоматически создает PlaceHolderFragment.java в package -> ui.main.Ничего страшного.Я не следил за видео, но добавил всю логику в Tab_Activity.java, но когда я пытался запустить его, выбрасываю кнопку из первого фрагмента, расположенного в основном упражнении, выдает следующее сообщение об ошибке:

java.lang.NullPointerException: попытка вызвать виртуальный метод 'void android.widget.TextView.setText (java.lang.CharSequence)' для ссылки на пустой объект в com.example.learnfragment.ui.main.PlaceholderFragment $ 1.onChanged(PlaceholderFragment.java:53) на com.example.learnfragment.ui.main.PlaceholderFragment $ 1.onChanged (PlaceholderFragment.java:50)

Это смутило меня, потому что я не имею ничего общего с Placeholder иво вкладке Activity.xml нет textview.

Начиная с этой ошибки, я пытался перетащить TextView и кнопку в пейджер, который находится на вкладке Activity, но он не отображается на экране.Похоже, я не могу ничего положить в viewpager.Я должен уменьшить размер окна просмотра и вывести его из окна просмотра, но все еще на вкладке.

Я пытался удалить метод, который выдает мне ошибку:

// Line 50
pageViewModel.getText().observe(this, new Observer<String>() {
            @Override
            // Blow is line 53
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });

Это работает.Но на странице просмотра отображается только первый Fragement, даже если я пытаюсь переключаться между различными вкладками, и на нем не отображаются кнопка и текстовое представление, которые я создаю в сегменте ViewPage.

FirstFragment.java

inflate.findViewById(R.id.btn_ShowTabActivity).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(), TabActivity.class));
            }
        });

TabActivity.java

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab);
        SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
        ViewPager viewPager = findViewById(R.id.view_pager);
        viewPager.setAdapter(sectionsPagerAdapter);
        TabLayout tabs = findViewById(R.id.tabs);
        tabs.setupWithViewPager(viewPager);

Activity_tab.xml

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="551dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >
    <--I Created the Button and textview but it does not show in the viewpage-->
        <Button
            android:text="test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </android.support.v4.view.ViewPager>

Мой вопрос:

  1. Что такое заполнитель?Почему навигационный ящик не нуждается в этом, но видео показывает, что Studio создаст это?

  2. Зачем во вкладке Activity нужен местозаполнитель?

  3. Почему я не могу перетащить или создать текстовое представление и кнопку на панели просмотра, но видео показывает, что это действительно так?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...