2016-07-27 5 views
3

업로드 버튼을 클릭 한 후 내 이미지를 다른 활동에 표시하고 싶습니다. 나는 2 개의 활동 (Main과 Main2)을 가지고있다. 현재 갤러리에서 이미지를 선택한 후 다음 활동으로 넘어가려고합니다. 대신 내 업로드 버튼에 uri를 넣으려고합니까?업로드 버튼을 클릭 한 후 다른 활동에 이미지 표시

MainActivity.Java

private void uploadImage(){ 
     @Override 
     public void onResponse(String s) { 
      loading.dismiss(); 
      Toast.makeText(MainActivity.this, s , Toast.LENGTH_LONG).show(); 
      Intent i = new Intent(MainActivity.this,Main2Activity.class); 
      startActivity(i); 
      finish(); 
     } 
    }, 


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

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 
     Uri filePath = data.getData(); 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); 
      imageView.setImageBitmap(bitmap); 
      Intent i = new Intent(this,Main2Activity.class); 
      i.putExtra("imagepath", filePath.toString()); 
      startActivity(i); 


     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

답변

1

당신은 당신이 할 수있는 귀하의 버튼에 다음 onActivityResult

private Uri filePath; 

if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 
     filePath = data.getData(); 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); 

      imageView.setImageBitmap(bitmap); 
      Intent i = new Intent(this,Main2Activity.class); 
      i.putExtra("imagepath", filePath.toString()); 
      startActivity(i); 


     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

에서 얻은 URI의 결과를 저장하는 클래스 수준 변수에 열린 변수를 변경할 수 있습니다 우리당을 다음과 같이 전달하십시오 :

Intent i = new Intent(this,Main2Activity.class); 
      i.putExtra("imagepath", filePath.toString()); 
      startActivity(i); 
+0

와우! 정말 고맙습니다! 그것은 작동하지만 여전히 내가 다음 일을 할 의도가없는 갤러리에서 이미지를 선택할 때 다음 활동에 영향을 미친다. 그러나, 나는 startActivity (i) onActivityResult를 주석 처리/제거하여이를 해결했다. startActivity를 제거하여 다음 활동을 수행하지 못하도록하는 것이 맞습니까? – arsenallavigne

+0

사실입니다. 버튼을 클릭하여 다음 활동으로 넘어 가기를 원하는 경우 startActivity (i)는 버튼의 onClick 메소드에만 위치해야합니다. –

+0

정말 고마워요! – arsenallavigne

1

이 코드를 시도하십시오 먼저 URI를 의도적으로 문자열로 넣으십시오.

intent.putExtra("imageUri", imageUri.toString()); 

다음 두 번째 활동에 당신이 다음과 같이이 할 수있는이

Uri myUri = Uri.parse(extras.getString("imageUri")); 
+0

도와 줘서 고맙습니다! :) – arsenallavigne

2

같은 문자열로 다시 변환 :

String filePathString = null; 

private void uploadImage(){ 
@Override 
       public void onResponse(String s) { 
        loading.dismiss(); 
        Toast.makeText(MainActivity.this, s , Toast.LENGTH_LONG).show(); 
        Intent i = new Intent(MainActivity.this,Main2Activity.class); 
        startActivity(i); 
        finish(); 
       } 
      }, 


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

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 
     Uri filePath = data.getData(); 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); 
      imageView.setImageBitmap(bitmap); 
      Intent i = new Intent(this,Main2Activity.class); 
      filePathString = filePath.toString(); 
      i.putExtra("imagepath", filePath.toString()); 
      startActivity(i); 


     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

:

클래스 수준 변수를 정의를 그리고 나서 버튼에 OnClickListener를 설정하십시오.

uploadButton.setOnClickListener(new OnClickListener() { 

@Override 
public void onClick(View v) { 
    Intent i = new Intent(this,Main2Activity.class); 
    i.putExtra("imagepath", MainActivity.this.filePathString); 
    startActivity(i); 
    MainActivity.this.finish(); 
    } 
}); 
+0

도움을 주셔서 감사합니다! :) – arsenallavigne

+0

당신은 환영합니다. 답을 투표하고 동의하십시오! –

0
Uri filePath = data.getData(); 
       String[] projection = {MediaStore.MediaColumns.DATA}; 
       Cursor cursor = managedQuery(filePath, projection, null, null, 
         null); 
       int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
       cursor.moveToFirst(); 

       String selectedImagePath = cursor.getString(column_index); 
    Then pass selectedImagePath in the intent like below 
    Intent i = new Intent(this,Main2Activity.class); 
      i.putExtra("imagepath", filePath.toString()); 
      startActivity(i); 
관련 문제