2010-08-23 3 views
2

이 사이트 덕분에 액티비티간에 String 값을 전달하는 방법을 알았지 만 이미지를 전달하는 데 문제가 있습니다. 내가하려는 것은 사용자가 갤러리를 열고 사진을 선택할 수있는 버튼을 클릭하게하십시오. 그런 다음 ImageView를 표시하는 다른 활동을 여는 다른 버튼이 있습니다. ImageView의 이미지를 이전 활동에서 선택한 이미지로 만들 수 있기를 원합니다. 여기 다른 활동에 이미지 전달하기

내가 갤러리를 열고 선택한 이미지 검색을 클릭있어 버튼을 가지고있는 클래스입니다 :

public class PreviewScreen extends Activity implements View.OnClickListener 
{ 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.previewscreen); 

    Bundle fieldresults = this.getIntent().getExtras(); 
    String backgroundpath = fieldresults.getString("bitmap"); 

    String background = BitmapFactory.decodeFile(backgroundpath); 
    ImageView gallerypic = (ImageView) findViewById(R.id.gallerypic); 
    gallerypic.setImageBitmap(background); 
} 
} 
: 여기

public class EnterEdit extends Activity implements View.OnClickListener 
{ 
private static final int SELECT_IMAGE = 0; 

String filepath; 

Bundle fieldresults; 
Intent b; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.enteredit); 

    Button selectwallpaper = (Button) findViewById(R.id.selectwallpaper); 
    selectwallpaper.setOnClickListener(this); 

    Button previewwallpaper = (Button) findViewById(R.id.previewwallpaper); 
    previewwallpaper.setOnClickListener(this); 

    fieldresults = new Bundle(); 
    b = new Intent(this, PreviewScreen.class); 
} 


@Override 
public void onClick(View view) 
{ 
    switch (view.getId()) 
    { 
    case R.id.selectwallpaper: 
    Intent gallery = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
    startActivityForResult(gallery, SELECT_IMAGE); 
    break; 

    case R.id.previewwallpaper: 
    startActivity(b); 
    } 
    break; 
    } 


protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == RESULT_OK) 
    { 
    if (requestCode == SELECT_IMAGE) 
    { 
    Uri selectedimage = data.getData(); 
    String[] filepathcolumn = {MediaStore.Images.Media.DATA}; 

    Cursor cursor = getContentResolver().query(selectedimage, filepathcolumn, null, null, null); 
    cursor.moveToFirst(); 

    int columnindex = cursor.getColumnIndex(filepathcolumn[0]); 
    filepath = cursor.getString(columnindex); 
    cursor.close(); 

    fieldresults.putString("bitmap", filepath); 
    b.putExtras(fieldresults); 
    } 
    } 
} 
} 

과를 선택한 이미지를 표시해야하는 클래스입니다

selectedImage 또는 b.putExtra("bitmap", selectedimage); 라인에 선택한 이미지를 전달해야한다면 확실하지 않은 내용이 OnActivityResult에 있습니다. 나는 둘 다 시도했지만 두 번째 활동에 대한 이미지를 보지 못했습니다. 또한 이미지 뷰를 올바르게 설정하는 경우 PreviewScreen 클래스에서 확실하지 않았습니다. 어떤 도움을 주셔서 감사합니다. 감사.

답변

2

저를 신뢰하십시오. 활동간에 이미지를 전달하고 싶지는 않습니다. 오히려 단순히 이미지 경로를 전달하고 두 번째 활동에서 해당 경로로 수행 할 작업 (이 경우 이미지 디코드 및 표시)을 결정하게하는 것이 가장 좋습니다.

+0

그래서 "filepath"변수 (줄에서 하나)를 전달하겠습니까 문자열 filepath = cursor.getString (columnindex) – joelreeves

+0

예 ... 그런 다음 활동 B의 이미지를 디코딩합니다. 어떻게해야합니까 :) – Cristian

+0

OK 약간의 수정 작업을했지만 ImageView는 두 번째 활동에서 여전히 비어 있습니다. 나는 그것을 첫 번째 클래스에서 올바르게 전달하고 두 번째 클래스에서 올바르게 참조하고 있는가? 지금까지 도움을 주셔서 감사합니다. – joelreeves

관련 문제