我不断收到以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ScrollView.setVisibility(int)' on a null object reference
单击按钮时,我想要scrollview,并且是要隐藏的内容。
但我看不到怎么了。我将按钮连接到scrollview,但它不起作用。这是片段中的我的按钮代码:
public class SavedBroad extends Fragment {
Button activityButtonPhoto;
public ScrollView broadScroll;
Button activityButtonBroad;
public ScrollView photoScroll;
View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.activity_saved_broad_tabbar, container, false);
broadScroll = rootView.findViewById(R.id.BroadScrollView);
// photoScroll = rootView.findViewById(R.id.PhotoScrollView);
// broadScroll= getActivity().findViewById(R.id.BroadScrollView);
// photoScroll=getActivity().findViewById(R.id.PhotoScrollView);
activityButtonPhoto= rootView.findViewById(R.id.PhotoVid);
activityButtonPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
broadScroll.setVisibility(View.INVISIBLE);
}
});
return rootView;
}
}
这是我的XML文件:
<Button
android:id="@+id/PhotoVid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="6dp"
android:background="@android:color/holo_green_dark"
android:text="PhotoVid"
app:layout_constraintHorizontal_bias="0.155"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/broad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="6dp"
android:background="@android:color/holo_red_dark"
android:text="Broadcast"
app:layout_constraintHorizontal_bias="0.741"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:id="@+id/BroadScrollView"
android:layout_width="393dp"
android:layout_height="505dp"
android:layout_marginBottom="144dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@android:color/holo_red_dark"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/broad"
app:layout_constraintVertical_bias="0.0">
<LinearLayout
android:id="@+id/BroadLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
<ScrollView
android:id="@+id/PhotoScrollView"
android:layout_width="0dp"
android:layout_height="433dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:background="@android:color/holo_green_dark"
app:layout_constraintBottom_toBottomOf="@+id/BroadScrollView"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginTop="8dp"
app:layout_constraintVertical_bias="1.0"
app:layout_constraintTop_toBottomOf="@+id/broad"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp">
<LinearLayout
android:id="@+id/PhotoVidLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
我不明白为什么要隐藏scrollview的按钮给我问题。
在这里您要获取按钮:
activityButtonPhoto= rootView.findViewById(R.id.PhotoVid);
如果您在此行后检查,activityButtonPhoto
为null
,这意味着在布局activity_saved_broad_tabbar
中未找到ID PhotoVid
的按钮,该按钮已夸大了rootView
。
当您尝试设置OnClickListener
时,它会引发Null指针异常。
检查ID已正确拼写,布局包含此ID。
这是一个拼写错误。
在您的布局XML中,您的scrollView是android:id="@+id/BroadScrollView"
,但您使用的是R.id.BroadcastScrollView
So Android在rootview中找不到此scrollview,因此broadScroll
将是null
,并且导致NullPoInterException。
嗨,您可以尝试一下吗?
public class SavedBroad extends Fragment
{
Button activityButtonPhoto;
public ScrollView broadScroll;
Button activityButtonBroad;
public ScrollView photoScroll;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.activity_saved_broad_tabbar, container, false);
broadScroll = rootView.findViewById(R.id.BroadScrollView);
// photoScroll = rootView.findViewById(R.id.PhotoScrollView);
// broadScroll= getActivity().findViewById(R.id.BroadScrollView);
// photoScroll=getActivity().findViewById(R.id.PhotoScrollView);
activityButtonPhoto= rootView.findViewById(R.id.PhotoVid);
activityButtonPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//broadScroll.setVisibility(View.INVISIBLE);
broadScroll.setVisibility(View.GONE);
}
});
return rootView;
}
}