2011-07-31 2 views
0

URL에서로드하고 이미지하는 here에서 빌린 클래스가 있습니다. 클래스를 호출하여 onClickListener (해당되는 경우)에서 사용하려고하지만 클래스를 호출하고 결과를 표시하는 방법을 잘 모르겠습니다. 지금은 정적 인 URL로 작업하고 있지만 결국 동적 인 작업이 될 것입니다. MainActivity 자바onClickListener를 사용하여 이미지로드

OnclickListerner :

list.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){ 
     showImage go = new showImage(); 
    } 

}); 

이 내 showImage 클래스입니다 :

package com.flash_tattoo; 

public class showImage extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fullimage); 

     ImageView imgView =(ImageView)findViewById(R.id.ImageView01); 
     String url = null; 
     Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png"); 
     imgView.setImageDrawable(drawable); 

    } 

    private Drawable LoadImageFromWebOperations(String url) { 
     try { 
      InputStream is = (InputStream) new URL(url).getContent(); 
      Drawable d = Drawable.createFromStream(is, "src name"); 
      return d; 
     } catch (Exception e) { 
      System.out.println("Exc="+e); 
      return null; 
     } 
    } 
} 

내가 새로운 레이아웃을 호출 한 다음에 내 showImage 객체를 첨부해야합니까? 어떤 도움이라도 좋을 것입니다. 미리 감사드립니다.

답변

0

먼저 포인트를 사용한다는 것을 유의하시기 바랍니다. showImage 클래스의 이름을 변경하십시오.

두 번째로 UI 스레드에서 장기 실행 작업이 발생합니다.이 작업은 AsyncTask (이 문서의 Painless Threading 참조) 또는 처리기가있는 새 스레드에서 수행하는 것이 가장 좋습니다. UI 스레드에서 장기 실행 작업을 수행하면 모든 입력 핸들러 이벤트가 적시에 처리되지 않으며 특히 느린 모바일 연결에서 응용 프로그램이 응답하지 않을 수 있습니다. 진행률 표시 줄을 추가하거나 기다리는 동안 응용 프로그램이 계속 작업 중임을 사용자에게 알리는 방법을 추가하십시오.

원래 질문에 대답하려면 showImageActivity 인 것 같습니다. 즉, 청취자 내부에서 새로운 showImage 객체를 만들 필요가 없으며 Intent을 실행하여 Activity을 확인하십시오. 올바른 레이아웃 파일이 있다고 가정 할 때 여기서는 작동하지 않는 것을 보지 못합니다.

또한 사용되지 않은 변수가있는 것 같습니다. String url = null;은 필요하지 않습니다.

편집 : 원하는 결과가 있지만 실제로는 System.out.println()을 사용해서는 안됩니다. Android에 로그인하는 표준 방법은 LogCat 시스템을 사용하는 것입니다.

suri가 언급했듯이 이미지를 표시하기 위해 전체적으로 새로운 Activity을 가질 필요는 없습니다. showImage 클래스 함수를 첫 번째 Activity으로 이동하고 ImageView을 첫 번째 레이아웃에 추가하면 버튼과 동일한 Activity에 이미지를로드 할 수 있습니다.

+0

정보 주셔서 감사합니다. 내 showImage 클래스를 MainActivity로 이동하고 내 이미지보기를 추가합니다. +1 – Denoteone

0

가능한 해결책 중 하나 : 1) 이미지를 다운로드 할 AsyncTask를 만듭니다. 2) 다운로드 결과를 알리는 콜백을 사용하십시오. 3) 콜백에서 이미지를 설정합니다.

이 즉시 무엇을 무엇을 알고 코드를 읽는 사람을 허용, 자바 명명 규칙은 클래스 이름은 대문자로 가지고, 당신은 UI 스레드에서없는 이미지를 설정하려는 경우 runOnUiThread

1

새 레이아웃을 호출 할 필요없이 레이아웃에 One 버튼과 ImageView를 넣고 완료 ​​한대로 이미지를 설정할 수 있습니다. 귀하의 코드 작업이 제대로 체크되었습니다. 희망 당신은 안드로이드 Manifiest 파일에 권한을 부여했을 수도 있습니다.

관련 문제