2012-07-25 12 views
1

사용자가 사용자 정의 배경을 가져올 수있는 프로그램을 얻으려고합니다. 여기에, 선택한 이미지를 참조하는 정수를 반환한다고 가정한다)Returning Image Resource ID

mDrawableBg = getResources().getDrawable(getImage()); 

된 GetImage (:

내가 인수로 다른 기능을 복용 getDrawable 기능을 가지고 : 여기

내가 어디에 있어요입니다 그 기능을위한 코드 (지금까지) :

public int getImage(){ 

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("image/*"); 
    startActivityForResult(intent, 10); 

} 

이것은 갤러리를 열고 사용자가 이미지를 선택할 수 있다고 가정합니다. 그런 다음 mDrawableBg를 사용하여 배경을 설정합니다. 내가 선택한 이미지를 참조 ID를 반환하는 방법을 잘 모르겠습니다. 어떤 제안?

+1

[Uri/sd 카드 + 안드로이드에 저장된 이미지 경로] (http : // stackoverflow.com/questions/5548645/get-thumbnail-uri-path-of-the-image-in-sd-card-android)를 사용해 보셨습니까? – BBdev

+0

이러한 문자열을 경로로 반환합니다. Drawable 객체로 배경을 설정하는 데 사용할 수있는 방법이 있습니까? getDrawable()는 정수 인수 만 취합니다. – Mike

답변

1

을하는 방법 당신이하려고하는 것은 불가능합니다, 나는 두렵습니다. 새로운 안드로이드 개발자로서 배우고 싶은 것들 중 하나는 액티비티 사이의 순환이 어떻게 작동하는지입니다. 귀하의 경우 Intent을 호출하여 데이터를 가져 오는 Activity을 실행 중입니다. 그러나 Android API에서 Intent은 자체 시간에만 참조 할 수 있습니다. 즉, 시도한 방식대로 getImage() 방법을 사용할 수 없습니다.

희망이 있습니다 만!

먼저해야 할 일은 Intent입니다. 당신은 당신이 getImage() 지금 가지고있는 코드를 통해이 작업을 수행합니다

public void getImage() { // This has to be a void! 
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("image/*"); 
    startActivityForResult(intent, 10); 
} 

이 방법은 이제 사용자가 선택하고자하는 이미지 피커를 시작합니다. 다음으로, 반환되는 것을 잡아야합니다. 이 getImage() 방법에서을 반환 할 수 없으며 다른 곳에서 수집해야합니다. 단지 getImage();를 호출하는 대신 mDrawableBg = getResources().getDrawable(getImage());를 호출,

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     final int SELECT_PICTURE = 1; // Hardcoded from API 
     if (requestCode == SELECT_PICTURE) { 
      String pathToImage = data.getData().getPath(); // Get path to image, returned by the image picker Intent 
      mDrawableBg = Drawable.createFromPath(pathToImage); // Get a Drawable from the path 
     } 
    } 
} 

마지막 :

당신은 아래의 방법을 구현해야합니다. Image Picker가 초기화됩니다.

일부 읽기 :

행운을 빕니다!

+0

감사합니다. – Mike

+0

한 질문 : pathToImage를 getPath (data.getData())로 설정하면이 값은 (data.getData()). getPath()입니까? 저기서 getPath를 사용하는 방법은 없었습니다. – Mike

+0

죄송합니다. 예, 그렇게해야합니다. 미안합니다. – Eric

1

는 잘 모르겠어요,하지만 당신은 당신이 의도에서 결과를받는 방법을 모르는 말은, 당신은 사용할 수 있습니다

@Override 
    protected void onActivityResult(int requestCode,int resultCode,Intent data) 
    { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode == RESULT_OK) 
     { 
      if (requestCode == 10) 
      { 
       // DoSomething 
      } 
     } 
    } 
+0

일반적으로 안드로이드를 다루는 것에 대해 너무 확신하지는 않습니다. 이것이 Android에서 프로그래밍 할 때 처음 시도한 것입니다. 나는 위의 getImage() 함수를 수정하여 사용자가 전화 갤러리에서 선택한 이미지에 참조 ID를 반환하는 방법을 알아 내려고하고 있습니다. – Mike

+1

getImage() 함수가 이미지를 반환하도록 하시겠습니까? 음, startActivity()의 결과는 onActivityResult로갑니다. 즉, startActivity()를 호출하면 getImage() 함수가 종료되고 사용자가 이미지를 선택하면 'onActivityResult()'함수가 호출됩니다. – Namnamseo

+0

좋아, 그래서 어떻게 든이 참조 ID를 반환 onActivityResult()를 재정의 할 수있을 것이라고 의미합니까? 휴대 전화의 내부/플래시 메모리에 저장된 이미지의 참조 ID를 반환 할 수 있습니까? – Mike

2

이 시도 :

String pathName = "selected Image path"; 
    Resources res = getResources(); 
    Bitmap bitmap = BitmapFactory.decodeFile(pathName); 
    BitmapDrawable bd = new BitmapDrawable(res, bitmap); 
    View view = findViewById(R.id.container); 
    view.setBackgroundDrawable(bd); 
+0

내가 어디에 넣을 지 잘 모르겠다. 나는 안드로이드를 다룰 때 꽤 새로운데, 나는 모든 것이 어떻게 배치되는지 익숙해 져있다. 선택한 이미지의 참조 ID를 반환하도록 위의 함수를 직접 수정할 수있는 방법이 있습니까? – Mike