마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

버튼1을 눌러서 다른 화면의 버튼2를 보이기 또는 숨기기

0 추천

안녕하세요,

안드로이드 뉴비입니다.

하다가 막혀서 형님들의 조언을 좀 구하고자 이렇게 질문 드립니다.

말그대로 1 버튼(personalinfo_married_save)을 누르면 다른 화면(IncomeAndExpense)의 버튼(incomeandexpense_spouse)이 보여지거나 숨겨지거나 해야하는데 보여진 화면만 뜰뿐이네요...

일단 메인에서 불리안 false를 줬고요 (레이아웃에서도 visibility 를 gone으로 줬기 때문에 안보여야 하는데 
보이네요 ㅡㅡ;;;) 
 
 
 
public class MainActivity extends Activity {
 
Button personal, IncomeAndExpense;
boolean personalinfo_married_save_clicked = false;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        this.personal = (Button)this.findViewById(R.id.personal);
        this.personal.setOnClickListener(new OnClickListener() {
 
public void onClick(View v) {
 
Intent PersonalInfo_intent = new Intent(MainActivity.this, PersonalInfo.class);
MainActivity.this.startActivity(PersonalInfo_intent);
}
});
        
        this.IncomeAndExpense = (Button)this.findViewById(R.id.IncomeAndExpense);
        this.IncomeAndExpense.setOnClickListener(new OnClickListener() {
 
public void onClick(View v) {
 
Intent IncomeAndExpense_intent = new Intent(MainActivity.this, IncomeAndExpense.class);
MainActivity.this.startActivity(IncomeAndExpense_intent);
}
});
        
        
        
    }
}
 
 
그다음 여기서 Personal 버튼을 누르면 기혼인지 미혼인지를 선택하는 버튼이 나오고요
 
 
 
 
public class PersonalInfo extends MainActivity {
 
Button personalinfo_back, personalinfo_married, personalinfo_single; 
 
 
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.personalinfo);
 
 
 
 
 
this.personalinfo_married = (Button)this.findViewById(R.id.personalinfo_married);
this.personalinfo_married.setOnClickListener(new OnClickListener() {
 
public void onClick(View v) {
// TODO Auto-generated method stub
Intent personalinfo_married_intent = new Intent(PersonalInfo.this, PersonalInfo_Married.class);
PersonalInfo.this.startActivity(personalinfo_married_intent);
}
});
 
 
 
this.personalinfo_single = (Button)this.findViewById(R.id.personalinfo_single);
this.personalinfo_single.setOnClickListener(new OnClickListener() {
 
public void onClick(View v) {
// TODO Auto-generated method stub
Intent personalinfo_single_intent = new Intent(PersonalInfo.this, PersonalInfo_Single.class);
PersonalInfo.this.startActivity(personalinfo_single_intent);
}
});
 
}
 
}
 
 
그리고 여기서 기혼(personalinfo_married)을 누르고 저장(personalinfo_married_save)을 누를시! 메인화면으로 돌아가고
 
 
public class PersonalInfo_Married extends PersonalInfo_Single {
 
Button personalinfo_married_back, personalinfo_married_save; 
 
InputMethodManager ipm;
 
LinearLayout personalinfo_married_lin;
 
 
 
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.personalinfo_married);
 
 
 
personalinfo_married_save = (Button)findViewById(R.id.personalinfo_married_save);
personalinfo_married_save.setOnClickListener(new OnClickListener() {
 
public void onClick(View v) {
// TODO Auto-generated method stub
 
 
Intent personalinfo_married_save_intent = new Intent(PersonalInfo_Married.this, MainActivity.class);
PersonalInfo_Married.this.startActivity(personalinfo_married_save_intent);
personalinfo_married_save_clicked = true;
 
}
 
});
 
}
 
 
 
 
}
 
메인화면에서 IncomeAndExpense를 누르면 정보입력창에 본인과 배우자가 보여야하는데 
아니면 미혼을 누르면 배우자는 안보이고 본인만 보여야 하는데 어떤걸 누르고 저장던지와는 상관없이
본인과 배우자가 둘다 보입니다...
 
 
 
 
public class IncomeAndExpense extends PersonalInfo_Married {
    
    Button incomeandexpense_back, incomeandexpense_next, incomeandexpense_myself, SpouseButton, incomeandexpense_spouse; 
    LinearLayout MyLayout, SpouseLayout;
 
    
 
 
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.incomeandexpense);
 
 
        SpouseButton = (Button)findViewById(R.id.incomeandexpense_spouse);
 
        if (personalinfo_married_save_clicked = false){
       
        SpouseButton.setVisibility(View.GONE);
        }
        else {SpouseButton.setVisibility(View.VISIBLE);} 
 
 

도와주십시요! 이해가 어려우시면 메일주소 부탁드립니다. 소스 보내 드리겠습니다.

감사합니다!

클래시 (120 포인트) 님이 2014년 2월 3일 질문

1개의 답변

0 추천

일단 메인에서 불리안 false를 줬고요

(레이아웃에서도 visibility 를 gone으로 줬기 때문에 안보여야 하는데 보이네요 ㅡㅡ;;;)

----------------------------------------------------------------------------------------------------------------
순서대로 확인해보세요~
 
1. 레이아웃(xml)에서 버튼의 visibility 속성을 Gone으로 설정했다면
에뮬을 구동해보지 않아도 그래픽 xml 상에서 바로 사라지는 것을 확인할 수 있다.
 
2. 그래픽 xml 상에서는 사라졌는데 에뮬 구동 시 버튼이 살아난다면

 if (personalinfo_married_save_clicked = false){

       
        SpouseButton.setVisibility(View.GONE);
        }
        else {SpouseButton.setVisibility(View.VISIBLE);} 
 
위 조건에서 personalinfo_married_save_clicked = false 이 성립되지 않음을 뜻한다.
★ if 조건문 비교에서는 = 이 아니고 == 을 사용해야한다.
 
그리고 personalinfo_married_save_clicked 변수를 정상적으로 가져다 쓰는지 확인!

p.s 혹시.. 클래스마다 상속을 그렇게 하신데에 이유가 있나요?

 

초보개발자ㅠ (33,870 포인트) 님이 2014년 2월 4일 답변
답변 감사드립니다.
=을 ==으로 고쳐서 이제 배우자 버튼이 안보여지기는 하나
이젠 어떠한 상황에서도 보여지지가 않네요 ㅠㅠ
클래스 상속을 그렇게 한이유는 버튼이 각각의 클래스에 지정되어 있다보니까 상속받지 않으면 인식이 안되서요

말씀하신대로 personalinfo_married_save_clicked 변수가 정상적으로 쓰여지지 않는것 같은데 어떻게 해결해야 될런지요?
음.. 클래시님 의도가

다른 액티비티에서 특정버튼 클릭 시 메인액티비티로 돌아가면서 메인엑티비티의 버튼을 핸들링(인비지블)하는 거죠?

먼저, 해결방법부터 말씀드리면~ 인텐트를 쓰세요. 액티비티 간에 데이터를 전달할 수 있어요.  그러니까 perrsonalinfo_married_save_clicked 이 놈을 쭉~ 땡겨다 쓰려고 하지말고 그냥 다른액티비티에서 boolean변수 하나 만들어서 키쌍밸류값을 메인액티비티로 넘겨주고 거기서 판단하면 되욤.

인텐트 설명하자면 길어지니 링크로 대신할게요 참조하세요
http://sounghwa777.blog.me/30108312661
검색해보시면 많이 있음.

_____________________________________________________
클래스 상속을 그렇게 한이유는 버튼이 각각의 클래스에 지정되어 있다보니까 상속받지 않으면 인식이 안되서요 라고 하셨는데..
제가 봤을 때는 상속 (extends)  다 제거하셔도 되고 메인에는 .this 로 버튼아이디 받으시는 것도 제거하셔도 될 거 같음.

인텐트 써보시고 막히는 부분 있으면 다시 질문주세요~
화이팅!
...