화면이동을 구현하려는데...
무엇 때문인지
프로필이나 다이어리나 들어갔다가
백 버튼을 통해서 나오게 되면
다시 프로필 버튼이나 다이어리 버튼을 눌러도 아무런 반응이 없어요...
무엇이 문제일까요... 아래가 코드에요...
package kr.ui;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class main extends Activity
{
@Override
protected void onStart()
{
// TODO Auto-generated method stub
super.onStart();
setContentView(R.layout.main);
Button btn_Profile, btn_Diary;
btn_Profile=(Button)findViewById(R.id.profile);
btn_Profile.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
setContentView(R.layout.profile);
Button btn_back;
btn_back=(Button)findViewById(R.id.back);
btn_back.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
setContentView(R.layout.main);
}
});
}
});
btn_Diary=(Button)findViewById(R.id.diary);
btn_Diary.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
setContentView(R.layout.diary);
Button btn_back;
btn_back=(Button)findViewById(R.id.back);
btn_back.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
setContentView(R.layout.main);
}
});
}
});
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
}
일단 소스가 일부뿐이여서 대략 예측만으로 보건데...
아마도 Activity 하나에 setContentview() 를 이용해 여러 layout을 바꿔치기 하는 방식으로 화면을 보여주길 의도하신 듯 한데요...
(아닐지도 모르겠네요 ^^;;;)
일단 정확한 원인은 저도 모르지만 저두 비슷한 방식을 시도해본 적이 있었는데요.
결론은 저렇게 하면 정상적인 inflate 과정을 거치지 않습니다.
저도 아는바가 짧아 뭐라 딱집어 문제점을 알려드리긴 힘들지만...(?!!)
아무튼 그렇습니다.
이런경우를 해결하기 위한 방법이라면....
(물론 제가 아는 한도내에서 입니다.
다른 고수분들께선 더 좋은 방법이 있을듯도 합니다. ^^)
1. FrameLayout 을 이용하는 방법입니다.
2. 두 번째 방법은 주로 많이 사용하는 방법인듯(??) 합니다만...
Activity 를 분리하여 만드는 방법입니다.
startActivity() 혹은 startActivityForResult() 를 이용해 화면을 전환하는 방식이지요.
이상 두가지 방법 정도가 생각나네요 ^^;;
추가로 지금 작성하신 코드 바탕에서 전환되는 뷰에 대해 inflate 과정을 수행하도록 수동으로 작성하는 방법도 있을 듯 합니다만...
이건 제가 잘 모르겠네요^^;
그럼 즐프하세요~