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()

中访问对象