调用 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);
}
我正在尝试制作一个 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);
}