fragment 이용해서 화면전환을 하려고하는데요.
샘플예제를 가지고 실습해본 결과 프래그먼트를 이용해서 텍스트와 배경색깔 바뀌는 정도만 알게되었습니다.
이것을 가지고 DownloadImageTask 라는 함수를 사용해 이미지를 웹에서 다운받아 화면에 보여주려고 합니다.
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
public void onClick(View v) { // 눌렀을때
switch (v.getId()) {
case R.id.steak_button: // oneFragment 버튼을 눌렀을때
steak_button = findViewById(R.id.steak_button);
steak_button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
new DownloadImageTask(
(ImageView) findViewById(R.id.steak_image1))
.execute("http://117.16.231.212:8010/images/menu/steak/grid_20130523122803.png");
}
});
mCurrentFragmentIndex = FRAGMENT_ONE; // FRAGMENT_ONE 의 값 0이 mCurrentFragmentIndex의 값으로 들어가고
fragmentReplace(mCurrentFragmentIndex); // fragmentReplace(0)의 값으로 들어가 함수를 실행시키고 화면을 바꿈 이벤트 설정함.
break;
이미지를 띄어주는 것 까진 가능한데 프래그먼트1에서 프래그먼트2 이동후 프래그먼트1로 다시 이동하려 터치하면
애플리케이션이 종료 되었다는 메시지가 뜹니다.
Q1. 제가 버튼1 버튼2 를 이용해서 프래그먼트1 에서 프래그먼트2로 이동하는 것을 구현하려고 합니다.
버튼1을 눌러 프래그먼트1 이동 후 버튼2를 눌러 프래그먼트2로 이동시 프래그먼트1의 내용들이 다시 사라지나요? 다 사라진다면 프래그먼트1의 내용을 유지하기 위해선 어떻게 해야하나요?
Q2. 제가 웹에서 이미지를 다운받는 형식으로 소스를 작성했는데 버튼을 누를때마다 웹에서 이미지를 다운받아야하는 어려움이 있습니다. 1번만 이미지를 다운받아 저장하여 웹에서 계속 불러오지 않고 저장된 데이터를 불러올수 있나요? 방법은 어떻게 해야하는 것인지 알려주시면 감사하겠습니다 ㅠㅠ
Q3. 프래그먼트1 에서 프래그먼트2 이동 후 프래그먼트1로 다시 이동시 애플리케이션이 종료되는 이유가 뭔지 알수 있을까요? 에러 로그 스크린샷 첨부할게요...