我在我的Android应用程序中得到了这个Scroll View,我想要做的是将其可见性设置为消失。当您单击具有id clickme的此按钮时,它应更改滚动视图的可见性并将其设置为Visible。然而,当我尝试这样做时,我收到了错误的标语"不幸的是,ExampleApp已停止"。基本上是崩溃了。 这是我的按钮代码;
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lastmonth"
android:id="@+id/lastmonth"
android:layout_marginLeft="40dp"
android:paddingLeft="40dp"
android:textSize="14sp" />
<Button
这是滚动视图的代码
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollview"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="5dp">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/scrollvisibility">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/exampletext"
android:id="@+id/textView10"
android:textColor="#ff010101"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</ScrollView>
这是我在活动中获得的代码;
final View v = null;
v.findViewById(R.id.scrollvisibility).setVisibility(View.GONE);
v.findViewById(R.id.lastMonthButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("Testing","Button Clicked");
//v.findViewById(R.id.scrollvisibility).setVisibility(View.VISIBLE);
}
});
答案 0 :(得分:2)
从与OP的调试会话 - 错误现在看来很清楚! onClickListener onClick方法只是覆盖当前的片段视图,所以当使用v.findViewById()
时 - 它使用了错误的视图。
v.findViewById(R.id.lastMonthButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("Testing","Button Clicked");
v.findViewById(R.id.scrollvisibility).setVisibility(View.VISIBLE);
}
});
修复方法是重命名onClick(View v) -> onClick(View view)
或实例化View scroller = v.findViewById(R.id.scrollvisibility);
并从onClick()
答案 1 :(得分:0)
正如codeMagic指出的那样,您设置了final v = null
,这意味着您将获得NullPointerException
。
要访问该按钮,请使用Button b = (Button) findViewById(R.id.lastMonthButton);
然后,您可以根据需要设置可见性。
此外,在onClick
方法中,按钮可以作为b
访问,因为它是在包含它的方法中声明的。
编辑:
第二个LinearLayout
无法完成任何操作,我认为您可以直接在ScrollView
设置可见性,而不是只隐藏LinearLayout