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