마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

fragment 이용해서 화면전환 오류발생 질문드립니다.

0 추천

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로 다시 이동시 애플리케이션이 종료되는 이유가 뭔지 알수 있을까요? 에러 로그 스크린샷 첨부할게요...

 

크리에이션 (220 포인트) 님이 2015년 1월 20일 질문

2개의 답변

0 추천
스테이크 이미지가 변경되지않는 것이라면 굳이 매번 웹에서받아올 필요가 없을것인데

이미지를 어플의 리소스로 가져와서 이미지뷰의 소스로 고정시키심은??
nicehee (73,100 포인트) 님이 2015년 1월 20일 답변
0 추천
1. fragment가 변화되게 되면 그 전의 fragment내용들은 다 사라지고 새로운 fragment가 불려집니다.

그 후에 다시 이전 fragment를 호출하면 onCreateView의 내용대로 다시 호출이 됩니다.

fragment의 화면 내용을  저장을 해 두었다가 onCreateView에서 다시 불러오는것이죠.

 

2. 이미지를 다운 받아서 sd카드에 저장 해 놓은 다음, 이미지가 있는지 없는지 체크 하고 다운여부를

결정하면 될 거 같네요.

 

3. Korean_Acvivity ReadJSONFeed의 onPost에서 NullPointer가 났네요 그쪽 코드 250번째 라인 한번 보세요.
노예의집 (23,370 포인트) 님이 2015년 1월 20일 답변
...