안녕하세요.
검색을 해 보아도, 붙들고 늘어져 있어도 해결이 안되서 질문드립니다.
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를 하면 재 할당 받으니 아니다 싶긴했지만 지푸라기라도 잡아보자는 심정으로..
제가 잘못한 점은 무엇인지 알려주셨으면 합니다.
긴글 읽어주셔서 감사합니다!.