본문 바로가기

개발도구/aOS - 안드로이드 개발

[안드로이드] ArrayList<FrameLayout> , Activity 의 형변환

FrameLayout 을 배열로 감싸아  처리하는 것을 보여주려 한다. 
실제 돌아가는 어플을 말하고 싶지만. 아래의 표로 표현하려 한다. 
 추가버튼
 FrameLayout  FrameLayout
 FrameLayout  FrameLayout
 FrameLayout  FrameLayout
 FrameLayout  FrameLayout
 FrameLayout (추가버튼)  FrameLayout

private ArrayList<FrameLayout> mApps;

SubPlusLayout plus = new SubPlusLayout(getWindow().getContext(),null,"plus");
mApps.add(plus);


추가버튼을 통해 각각 원하는 FrameLayout 을 위의 소스를 통해 추가할수 있다.  

핑크색 추가버튼 과 하늘색 추가버튼이 있다.
핑크색은 부모창에 있는 추가 버튼
하늘색은 자식창(부모창안에) 있는 추가버튼이다.

핑크색의 소스는 이렇다.
channerBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getWindow().getContext(), Channel.class);
startActivityForResult(intent, ACT_EDIT);
}
});

하늘색의 소스
public void onClick(View v) {
// TODO Auto-generated method stub
           
        Intent intent = new Intent(v.getContext(), Channel.class);
((Activity) v.getContext()).startActivityForResult(intent, ACT_EDIT);      
}
하늘색 추가 버튼이 추가버튼을 눌러 핑크색의 추가버튼과 같은 기능을 하려면 위의 소스처럼
Activity 의 형변환이 필요하다
사실 안드로이드에서 제공해주는 자동맞춤으로 해결하긴했지만, 정말 알아둬야 할 필요한 부분이다.

 
참고)
 startActivityforResult intent 은 아래의 그림처럼 한 화면에서 A 와 B을 보여줄수 있다
 


startActivityforResult   은 B 클래스에서 A 클래스로 넘어 올때 onActivityResult 가 필요하다.

 @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
   
    super.onActivityResult(requestCode, resultCode, data);
   
    switch(requestCode)
    {
    case ACT_EDIT:
    if(resultCode == Activity.RESULT_OK){    
    reloadGrid();
    }
    break;
   
    }
    }