Установите видимость видимая, но установите включить ложную Android XML Java

#java #android #xml

Вопрос:

У меня есть кнопка с именем HideIt :

 android:id="@ id/HideIt"
android:onClick="HideIt_onClick"
 

У меня есть еще одна кнопка с именем HelloWorld :

  android:id="@ id/HelloWorld"
 android:onCick="HelloWorld_onClick"
 

И третья кнопка с именем VisibleIt :

 android:id="@ id/VisibleIt"
android:onCick="VisibleIt"
 

Каков сценарий?

Прежде всего, я нажимаю на HideIt кнопку, поэтому ее функция будет невидимой и отключит HelloWorld кнопку, как показано ниже:

     public void HideIt_onClick(View v) {
    
Button DisableHide = findViewById(R.id.HelloWorld);
DisableHide.setVisibility(View.GONE);
DisableHide.setEnabled(false);}
 

Затем я нажимаю на VisibleIt кнопку, чтобы ее функция отображала HelloWorld кнопку, НО она НЕ включала HelloWorld кнопку, как показано ниже:

     public void VisibleIt_onClick(View v) {
        
Button VisibleHelloWorld = findViewById(R.id.HelloWorld);
VisibleHelloWorld.setVisibility(View.VISIBLE);}
 

В чем проблема?
Проблема в том, что когда я нажимаю на VisibleI t, я ожидаю, что моя HelloWorld кнопка будет видимой, но все еще отключена, но она никогда не будет видимой и все еще скрыта.

Я добавил строку кода к VisibleIt кодам в текст, как показано ниже:

 DisableHide.setEnabled(true);}
 

Таким VisibleIt образом, коды, как показано ниже:

     public void VisibleIt_onClick(View v) {
        
Button VisibleHelloWorld = findViewById(R.id.HelloWorld);
VisibleHelloWorld.setVisibility(View.VISIBLE);
DisableHide.setEnabled(true);}
 

В этом случае, когда я нажимаю на VisibleIt кнопку, она становится видимой , НО НЕ отключенной, как я хотел, поэтому я установил setEnable(false) VisbileIt коды выше, но у меня была та же проблема, что и раньше, кнопка HelloWorld все еще СКРЫТА.

Поэтому я попробовал private void использовать коды ниже, но все равно эта проблема:

публичная пустота VisibleIt_onClick(Просмотр v) {

 Button VisibleHelloWorld = findViewById(R.id.HelloWorld);
VisibleHelloWorld.setVisibility(View.VISIBLE);
DisableHide.setEnabled(true);
DisableItNow();
}
    private void DisableItNow() {
    Button DisableItPlease = findViewById(R.id.HelloWorld);
    DisableItPlease.setEnabled(false);
    }
 

Мне нужно, чтобы эта HelloWorld кнопка , которая была отключена и исчезла из-за другой функции Java, стала видимой с помощью этой функции , но все еще отключена

Комментарии:

1. Почему вы продолжаете находить кнопку с одним и тем же идентификатором?, вы можете сделать ее глобальной и получить к ней доступ, возможно, в этом причина проблемы. Попробуйте инициализировать кнопку в методе onCreate и получить к ней доступ из любого места внутри действия / фрагмента

Ответ №1:

Возможно, этот приведенный ниже код может вам помочь.

 public class MainActivity extends AppCompatActivity{

Button HideIt;
Button HelloWorld;
Button VisibleIt;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  
   HideIt = findViewById(R.id.HideIt);
   HelloWorld = findViewById(R.id.HelloWorld);
   VisibleIt = findViewById(R.id.VisibleIt);

   HideIt.setOnClickListener(v -> {
        HelloWorld.setVisibility(View.INVISIBLE);
        HelloWorld.setEnabled(false);
   });
   
   VisibleIt.setOnClickListener(v -> {
        HelloWorld.setVisibility(View.VISIBLE);
        HelloWorld.setEnabled(true);
   });

   //in xml code and in Your activity java file you can now safely delete the 
   //function that you created for 
   //hiding or showing
   
  } 


}
 

Ответ №2:

Может быть, просто используйте оператор if внутри onClick() , чтобы проверить видимость следующим образом:

 public void VisibleIt_onClick(View v) {
    //Button VisibleHelloWorld = findViewById(R.id.HelloWorld);
    //v is already your button
    if( v.getVisibility() == View.INVISIBLE)
        v.setVisibility(View.VISIBLE);
    else if(v.getVisibility() == View.VISIBLE)
        v.setVisibility(View.INVISIBLE)
    else{;/*the view is View.GONE*/}
}
 

так что, если вид (ваша кнопка) виден, он устанавливает видимость View.INVISIBLE , а если невидим View.VISIBLE , то .
Для того, что вы пытаетесь сделать, нет смысла изменять свойство кнопки .setEnabled() .