ScrollView onclick 设置可见性为Visible
ScrollView onclick set the visibility to be Visible
我的 android 应用程序中有这个滚动视图,我想做的是将其可见性设置为消失。当您单击带有 id clickme 的此按钮时,它应该更改滚动视图的可见性并将其设置为可见。但是,当我尝试执行此操作时,出现错误 sayign "Unfortunately, ExampleApp has stopped"。基本崩溃。
这是我的按钮代码;
<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>
这是我在 activity;
中获得的代码
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);
}
});
正如 codeMagic 指出的那样,您设置了一个 final v = null
,这意味着您将得到一个 NullPointerException
。
要访问按钮,请使用 Button b = (Button) findViewById(R.id.lastMonthButton);
然后您可以根据需要设置可见性。
此外,在 onClick
方法中,按钮可以作为 b
访问,因为它是在包含它的方法中声明的。
编辑:
第二个 LinearLayout
没有完成任何事情,我认为你可以直接在 ScrollView
中设置可见性而不是只隐藏 LinearLayout
在与 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()
中访问对象
我的 android 应用程序中有这个滚动视图,我想做的是将其可见性设置为消失。当您单击带有 id clickme 的此按钮时,它应该更改滚动视图的可见性并将其设置为可见。但是,当我尝试执行此操作时,出现错误 sayign "Unfortunately, ExampleApp has stopped"。基本崩溃。 这是我的按钮代码;
<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>
这是我在 activity;
中获得的代码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);
}
});
正如 codeMagic 指出的那样,您设置了一个 final v = null
,这意味着您将得到一个 NullPointerException
。
要访问按钮,请使用 Button b = (Button) findViewById(R.id.lastMonthButton);
然后您可以根据需要设置可见性。
此外,在 onClick
方法中,按钮可以作为 b
访问,因为它是在包含它的方法中声明的。
编辑:
第二个 LinearLayout
没有完成任何事情,我认为你可以直接在 ScrollView
中设置可见性而不是只隐藏 LinearLayout
在与 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()