Android 使用onClick方法更改TextView的可见性/不可见性

Android 使用onClick方法更改TextView的可见性/不可见性,android,xml,android-layout,android-activity,Android,Xml,Android Layout,Android Activity,我试图使两个文本视图在同一次单击时出现和消失,然后在下一次单击时vica versa出现和消失。我在这个网站上读过一些帖子,但是这些例子中的解决方案对我来说并不适用。然而,我借用了他们的一些想法 package com.mycompany.screenchangeapplication; import android.app.*; import android.graphics.drawable.ColorDrawable; import android.os.*

我试图使两个文本视图在同一次单击时出现和消失,然后在下一次单击时vica versa出现和消失。我在这个网站上读过一些帖子,但是这些例子中的解决方案对我来说并不适用。然而,我借用了他们的一些想法

   package com.mycompany.screenchangeapplication;

    import android.app.*;
    import android.graphics.drawable.ColorDrawable;
    import android.os.*;
    import android.view.*;
    import android.widget.*;

public class ScreenActivity extends Activity {

    public RelativeLayout container;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screen);

        container = (RelativeLayout) findViewById(R.id.ScreenActivity);
        container.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                changeScreen(v);
            }
        });
    }

    public void changeScreen(View v) {
        ColorDrawable cd = (ColorDrawable) this.container.getBackground();
        TextView ON = (TextView) findViewById(R.id.ON);
        TextView OFF = (TextView) findViewById(R.id.OFF);

        if (cd != null && cd.getColor() == getResources().getColor(R.color.WHITE)) {
            container.setBackgroundColor(getResources().getColor(R.color.BLACK));
            OFF.setVisibility(View.VISIBLE);
            ON.setVisibility(View.INVISIBLE);
        } else {
            container.setBackgroundColor(getResources().getColor(R.color.WHITE));
            OFF.setVisibility(View.INVISIBLE);
            ON.setVisibility(View.VISIBLE);
        }
    }


}


当我将应用程序放入模拟器时,它会崩溃,因此出现了严重错误

我不确定视图v应该如何传递给onClick和changeScreen。我希望传递给onClick的视图也能传递给changeScreen,但我不确定这到底是如何工作的

在Android Studio中,所有的文本似乎都很好(尽管不是这样)

步骤1)首先,您将color.xml文件添加到values文件夹中。(您可以对color使用任何名称

步骤2)在color.xml中这样使用:

 <?xml version="1.0" encoding="utf-8"?>
<resources>

    <color name="White">#FFFFFF</color>
 <!-- White-->
    <color name="Black">#000000 </color>
 <!-- BLACK -->

</resources>

出现了什么错误?一个正在崩溃的应用程序。这个错误太大了,我无法在这里发布。问题似乎源于设置可见性和视图。请在此处发布您的logcat,或者告诉您得到了什么错误,最后告诉您得到了什么类型的异常/@Darkie我已经在上面列出了logcat的一些错误。这个错误太大了,我无法把它全部放进去。我不知道为什么在changeScreen()步骤1)和2)中,你已经把白色和黑色换成了圆形。步骤3)是完全相同的条白色和黑色是交换轮??这代码完全为我运行。因为默认背景为白色,所以我将切换黑白颜色。对不起,您是说此代码在IDE中适用,并且符合要求,可以在模拟器中运行吗?请尽量避免将代码作为答案转储,并尝试解释其作用和原因。对于没有相关编码经验的人来说,您的代码可能并不明显。
 <?xml version="1.0" encoding="utf-8"?>
<resources>

    <color name="White">#FFFFFF</color>
 <!-- White-->
    <color name="Black">#000000 </color>
 <!-- BLACK -->

</resources>
  public void changeScreen(View v) {
        ColorDrawable cd = (ColorDrawable) this.container.getBackground();
        TextView ON = (TextView) findViewById(R.id.ON);
        TextView OFF = (TextView) findViewById(R.id.OFF);

        if (cd != null && cd.getColor() == getResources().getColor(R.color.Black)) {
            container.setBackgroundColor(getResources().getColor(R.color.White));
            OFF.setVisibility(View.INVISIBLE);
            ON.setVisibility(View.VISIBLE);
        } else {
            container.setBackgroundColor(getResources().getColor(R.color.Black));
            OFF.setVisibility(View.VISIBLE);
            ON.setVisibility(View.INVISIBLE);
        }
    }
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {

        textview.setVisibility(textview.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);

    }
});