调用 AppBarLayout 时出现 NullPointerException - Android

NullPointerException when invoking AppBarLayout - Android

我正在尝试制作一个 YouTube 克隆应用。

.XML 文件中的我的 AppBarLayout 正在返回:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.StreamingApplicationNactus/com.example.StreamingApplicationNactus.HomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.appbar.AppBarLayout.setVisibility(int)' on a null object reference

这是 .XML 文件:

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:fitsSystemWindows="true"
    tools:context=".Profile_Table_Fragment">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/newappBar"
        android:fitsSystemWindows="true">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="#006E7F"
            app:contentScrim="?android:attr/colorControlHighlight"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:id="@+id/newappBar2">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Channel name"
            android:textSize="20dp"
            android:paddingLeft="10dp"
            android:textColor="@color/white"
            android:layout_gravity="center_vertical"
            android:layout_marginStart="6dp"
            android:id="@+id/user_profile_name"/>

        <androidx.appcompat.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:menu="@menu/main_topbar"
            android:theme="@style/Panel"
            />

        </com.google.android.material.appbar.CollapsingToolbarLayout>


        <com.google.android.material.tabs.TabLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#006E7F"
            app:tabGravity="center"
            app:tabIndicatorColor="@color/black"
            app:tabIndicatorFullWidth="false"
            app:tabIndicatorHeight="1dp"
            android:id="@+id/tab_Layout"
            app:tabMode="scrollable"
            app:tabSelectedTextColor="#FFF"
            app:tabTextColor="@color/white">

            <com.google.android.material.tabs.TabItem
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Home" />

            <com.google.android.material.tabs.TabItem
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Videos" />

            <com.google.android.material.tabs.TabItem
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="About" />


        </com.google.android.material.tabs.TabLayout>


    </com.google.android.material.appbar.AppBarLayout>

    <androidx.viewpager.widget.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
        android:id="@+id/pageViewer"/>


</androidx.coordinatorlayout.widget.CoordinatorLayout>

而在.java文件中,我只能这样写,我会得到同样的错误:



AppBarLayout appBarLayout;

@Override
    protected void onCreate(Bundle savedInstanceState) {

 appBarLayout =(AppBarLayout) findViewById(R.id.newappBar);
        appBarLayout.setVisibility(View.VISIBLE);
 }

}

错误将在 appBarLayout.setVisibility(View.VISIBLE);

这是我第一次post来这里,所以如果我需要添加更多信息,请告诉我!

当你使用Fragment时,你需要对view进行inflate

删除这些代码:

 appBarLayout = (AppBarLayout) findViewById(R.id.newappBar);
 appBarLayout.setVisibility(View.VISIBLE);

然后在您的 onCreateView。添加这些行:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
   final View root = inflater.inflate(R.layout.fragment_table_profile, container, false);
   final AppBarLayout appBarLayout = root.findViewById(R.id.newappBar);
   appBarLayout.setVisibility(View.VISIBLE);
}