안녕하세요.


검색을 해 보아도, 붙들고 늘어져 있어도 해결이 안되서 질문드립니다.


Main에서 TabActivity를 Intent해서 호출하고 ListView가 있는 텝을 보면 처음 1번은 리스트로 잘 나옵니다.

TabActivity를 종료하고 Main으로 돌아가서 다시 TabActivity를 호출해서 ListView를 보면 목록이 나오지 않습니다.


순서는 이렇습니다.


MainActivity -> (Intent)TabActivity -> 그안의 1번텝안에 Intent ListViewActivity 처음 한번 실행시 잘 나옵니다.


-> TabActivity finish(); -> MainActivity -> 다시 (Intent)TabActivity -> Intent ListViewActivity 목록이 나오지 않습니다.



///////////////TabView.java////////////////////////

public class TabView extends TabActivity 

{

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) 

{

   super.onCreate(savedInstanceState);

   final TabHost tabHost = getTabHost();


        tabHost.addTab(tabHost.newTabSpec("tab1")

                .setIndicator("list1")

                .setContent(new Intent(this, Album.class)

                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));


        tabHost.addTab(tabHost.newTabSpec("tab2")

                .setIndicator("list2")

                .setContent(new Intent(this, AlbumCamera.class)

                //.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

                ));

}

}



///////////// AlbumCamera .java///////////

public Handler m_Handler = new Handler()

{

//Handler 객체를 생성하고

// handleMessage(Message)를 오버라이딩하여

// mHandler 인스턴스에게 전달 되는 모든 메시지를 처리함.

public void handleMessage( Message msg )

{

if(m_ArrayListData != null )

{

m_csFileList.lock();

CArrayData aaa = m_ArrayListData;

m_csFileList.unlock();


switch (aaa.m_arData[0])

{

case MESSAGE_FILEINFO_BEGIN:

String str = new String(m_FileList);

StringTokenizer stok = new StringTokenizer(str,"/");

ArrayList<FileList> m_FileListname = new ArrayList<FileList>();


while (stok.hasMoreTokens())

{

FileList p1 = new FileList(stok.nextToken(), 0);

m_FileListname.add(p1);

}


ListView m_ListView = (ListView)findViewById(R.id.list_FileList);


// 어댑터에 데이터 포함

FileListAdapter m_FileListAdapter = new FileListAdapter(AlbumCamera.this,  R.layout.row, m_FileListname);

// 리스트뷰에 어댑터 연결

m_ListView.setDivider(null);

m_ListView.setAdapter(m_FileListAdapter);

m_FileListAdapter.notifyDataSetChanged();

m_Filename = m_FileListname;

}

}

}


Data를 얻은 후 핸들로 메세지를 날려서 데이터가 있을 경우 ArrayAdapter를 상속받은 FileListAdapter에 넣어 화면에 출력하려 합니다.


그런데 이게 처음 텝뷰의 리스트뷰를 확인하면 잘 나옵니다. 클릭도 잘 되고 열심히 찾았던 색변경도 잘됩니다.


그런데 텝뷰를 종료하고나서 다시 텝뷰를 intent하여 보면 리스트가 보이지 않습니다.


혹시나해서 Data를 못 얻어와서 그런가 해서 봤는데 Data는 문제없이 잘 얻어와서 ArrayList에 차곡차곡 잘 쌓아놓고 있습니다.


제 생각에는 TabActivity종료시 new나 setAdapter 등을 초기화를 해주지 못한 것이 있어서 Adapter이나 ArraryList 등이 Finish();를 거쳐도 메모리를 차지하고 있어서

두번째 재시작 할 때 문제가 생겨서 그런 것 같다는 생각이 들어서 해제하는 것의 자료를 찾아보았으나 제가 이해를 못하거나 없어서...

새로 new를 하면 재 할당 받으니 아니다 싶긴했지만 지푸라기라도 잡아보자는 심정으로..



제가 잘못한 점은 무엇인지 알려주셨으면 합니다.


긴글 읽어주셔서 감사합니다!.