2016-10-24 34 views
0

我有两种语言按钮,我想在点击其中一个按钮后隐藏它们。当我在XML文件中添加onClick事件并尝试隐藏按钮时,它不起作用。为什么setVisibility只能用于setOnClickListener,但不能用于onClick?

这里是我的代码:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button1=(Button)findViewById(R.id.english); 
     button2=(Button)findViewById(R.id.arabic); 
     } 

    public void on_english(View view) { 
     button1.setVisibility(View.GONE); 
     button2.setVisibility(View.GONE); 
} 

当我使用button1.setOnClickListener它工作得很好:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    button1=(Button)findViewById(R.id.english); 
    button2=(Button)findViewById(R.id.arabic); 

    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      button1.setVisibility(View.GONE); 
      button2.setVisibility(View.GONE); 
     } 
    }); 

有没有在我的代码的任何错误,当我使用onClick事件?

为什么setVisibility只能与setOnClickListener一起使用? XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".Start.MainActivity" 
    android:background="@mipmap/back"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="@string/label1" 
     android:id="@+id/textView" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="English" 
     android:id="@+id/english" 
     android:onClick="on_english" 
     android:layout_marginBottom="64dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:visibility="visible" 
     android:layout_marginLeft="55dp" 
     android:layout_marginStart="55dp" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="العربية" 
     android:id="@+id/arabic" 
     android:onClick="on_arabic" 
     android:visibility="visible" 
     android:layout_alignTop="@+id/english" 
     android:layout_toRightOf="@+id/textView" 
     android:layout_toEndOf="@+id/textView" /> 

</RelativeLayout> 

谢谢。

+1

的java!=机器人 – Ungeheuer

+0

向我们展示您的XML文件也是如此,看起来像错误是在XML文件中 –

+0

我添加xml文件 –

回答

0

你为什么不只是这样做:

@Override 
public void onClick(View view) { 
    if (view == button1) { 
     // if view == english 

     button1.setVisibility(View.VISIBLE); 
     button2.setVisibility(View.GONE); 
    } else if (view == button2) { 
     // if view == arabic 

     button1.setVisibility(View.GONE); 
     button2.setVisibility(View.VISIBLE); 
    } 
} 

只需添加您的onCreate:

button1.setOnClickListener(this); 
button2.setOnClickListener(this); 

附加说明:您可以通过杰克沃顿它可用于at this link注射视使用butterknife。

0

改为使用view.setVisibility()

编辑:使用view.getId()获取按钮的ID(R.id.yourButtonId)并执行if语句来设置可见性。

+0

它不工作,即使它的工作,它会隐藏一个按钮只 –

+0

是,但我在方法内部使用了button1和button2来隐藏它们,但是如果我使用了view,这将仅影响button1 –

+0

使用'view.getId'获取按钮并执行切换大小写。让我更新我的答案... –

相关问题