2013-07-17 3 views
0

У меня проблемы с простой задачей.Неожиданное поведение с видимостью кнопки - Android

У меня есть 2 кнопки, и я хочу, чтобы в одно и то же время было видно только одно, поэтому, когда вы касаетесь одного, он скрывается, а другой появляется.

Это мой код:

fromAnex = new Button(this); 
    fromAnex.setText("from"); 
    fromAnex.setOnClickListener(new Button.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Log.d("ONClickListener", "from anex"); 
      returnFromAnex(); 
     } 
    }); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.LEFT_OF,plano.getId()); 
    params.addRule(RelativeLayout.CENTER_VERTICAL); 
    rl.addView(fromAnex,params); 
    fromAnex.setVisibility(View.GONE); 


    toAnex = new Button(this); 
    toAnex.setText("to"); 
    toAnex.setOnClickListener(new Button.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Log.d("ONClickListener", "Show anex"); 
      showAnex(); 
     } 
    }); 
    RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    params2.addRule(RelativeLayout.RIGHT_OF,plano.getId()); 
    params2.addRule(RelativeLayout.CENTER_VERTICAL); 
    rl.addView(toAnex,params2); 

private void showAnex() 
{ 
    fromAnex.setVisibility(View.VISIBLE); 
    toAnex.setVisibility(View.GONE); 

    private void returnFromAnex() 
{ 
    fromAnex.setVisibility(View.GONE); 
    toAnex.setVisibility(View.VISIBLE); 

Я действительно не могу понять, почему, но это первый вызов fromAnex.setVisibility(View.GONE); работает, как и ожидалось, первый вызов showAnex() в fromAnex.setVisibility(View.VISIBLE); работает тоже, но toAnex.setVisibility(View.GONE); прямо под оленья кожа Работа.

И после этого ничего не происходит с видимостью кнопок, когда я касаюсь.

Кто-то может видеть, что случилось с моим кодом?

Извините за мой плохой английский и спасибо.

EDIT:

Это два метода Арент завершения, остальные не связаны с этой проблемой кнопки видимости.

Когда я установил видимость, чтобы исчезнуть сразу после создания кнопки, она работает, но затем я не могу установить видимость, чтобы снова уйти, вот и проблема.

+0

Есть ли недостаток в исходном коде? В ваших методах 'showAnex' и' returnFromAnex' нет никаких закрывающих скобок '}'. –

+0

. Чтобы сообщить вам, есть вид под названием «ViewSwitcher», который переключается между двумя видами и будет соответствовать вашему делу. – Piovezan

ответ

0

Принимая ваш фрагмент, я попытался запустить следующее, и он работает отлично. Я думаю, вы делаете небольшую ошибку, где, как сказал DevTest.

public class MainActivity extends Activity { 
Button fromAnex,toAnex; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     RelativeLayout rl=new RelativeLayout(getApplicationContext()); 
     RelativeLayout.LayoutParams relPra=new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     rl.setLayoutParams(relPra); 

     fromAnex = new Button(this); 
     fromAnex.setText("from"); 
     fromAnex.setOnClickListener(new Button.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Log.d("ONClickListener", "from anex"); 
       returnFromAnex(); 
      } 
     }); 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
     params.addRule(RelativeLayout.CENTER_VERTICAL); 
     rl.addView(fromAnex,params); 
     fromAnex.setVisibility(View.GONE); 
     fromAnex.setId(1); 


     toAnex = new Button(this); 
     toAnex.setId(2); 
     toAnex.setText("to"); 
     toAnex.setOnClickListener(new Button.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Log.d("ONClickListener", "Show anex"); 
       showAnex(); 
      } 
     }); 
     RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
     params2.addRule(RelativeLayout.RIGHT_OF,fromAnex.getId()); 
     params2.addRule(RelativeLayout.CENTER_VERTICAL); 
     rl.addView(toAnex,params2); 

     setContentView(rl); 
    } 
    private void showAnex() 
    { 
     fromAnex.setVisibility(View.VISIBLE); 
     toAnex.setVisibility(View.GONE); 
    } 
     private void returnFromAnex() 
    { 
     fromAnex.setVisibility(View.GONE); 
     toAnex.setVisibility(View.VISIBLE); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 
Смежные вопросы