내가 좋아하는 그것을 할 줄은 findViewById를 호출로, 멤버 변수로 참조를 저장하는 것이 중요합니다
// Do this in your onCreate method and store the references as class member variables
showDisplay1 = (LinearLayout)findViewById(R.id.display1);
showDisplay2 = (LinearLayout)findViewById(R.id.display2);
showDisplay3 = (LinearLayout)findViewById(R.id.display3);
// Do this somehwere in your code
showDisplay1.setVisibility(isA?View.VISIBLE:View.GONE);
showDisplay2.setVisibility(isB?View.VISIBLE:View.GONE);
showDisplay3.setVisibility(isC?View.VISIBLE:View.GONE);
효율성를 들어이 응용 프로그램이 만들어 질 때 한 번만 호출하면되므로 (멤버 변수에 액세스하는 것에 비해) 상당히 비싼 작업입니다 d (활동이 파괴되어 다시 생성되면 방향 변경도 고려해야 함).
꽤 깨끗하고 깔끔합니다. 인라인 if 식은 이런 종류의 함수에 매우 유용합니다.
myFunction((expression)?if_value:else_value);
는 변수가 이미 부울 아닌 경우에는 괄호를 넣어야 할 경우 기본적으로 ()
을 무시할 수
int value = 0;
if(expression) {
value = if_value;
} else {
value = else_value;
}
myFunction(value);
의 짧습니다. 따라서이 잘 너무
myFunction((someVariable>3)?View.VISIBLE:View.GONE);
Edit2가 작동합니다 :
int value = 0;
if(somveVariable > 3) {
value = View.VISIBLE;
} else {
value = View.GONE;
}
myFunction(value);
그래서 그 대신 당신이 함수에 전달하려는 값을 보유하는 변수를 만드는, 당신이 그것을 할 수있는 모든 인라인.
편집 : 아, 그리고 BTW : View.setVisibility(...)
방법에 대한 0
또는 8
을 사용하지 않을하시기 바랍니다. 이는 매우 나쁜 습관이며, 미래에 가치가 변하면 응용 프로그램이 중단됩니다. View.VISIBLE
은 이미 public static final int
입니다. 즉, 컴파일러는 View.VISIBLE
의 모든 항목을 0
으로 바꿉니다. 바이트 코드에서는 0
을 사용하는 것과 동일하지만 성능에는 영향을 미치지 않지만 값을 변경해야하는 경우 모든 변경 사항은 새로운 SDK로 컴파일 할 때 자동으로 발생하며 수동 수정은 필요하지 않으며 시도하는 동안 모든 단일 0
및 8
을 새 값으로 바꿉니다!
멋지다. 잘 작동했다. if 문의 다른 함수를 호출하고 싶다면 어떻게해야합니까? 예 : ig isA, 숨기기 및 다른 기능을 실행합니다. – bebeTech
이 작업을 수행 할 수도 있습니다. 정상적인'if'에서 작동하는 모든 작업이 가능합니다. – Tseng
흠, 구문을 올바르게 이해할 필요가 없습니다. 나는 showDisplay1.setVisibility (isA? View.VISIBLE, functionA() ;: View.GONE)를 시도했다. – bebeTech