2017-10-20 1 views
0

나는 사람들에게 도움을 청하는 것을 유감스럽게 생각하지만 잠시 동안이 문제로 고생했습니다.카메라의 사진이 두 번째 활동에 나타나지 않습니다.

MainActivity에서 단추를 눌러 카메라에 넣고 사진을 찍습니다. 그런 다음 매우 동일한 이미지의 미리보기가있는 다음 활동으로 이동합니다. 그러나 다음 액티비티에 도착할 때마다 이미지가 나타나지 않고 그냥 자리 표시 자입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 코드에서 뭔가 빠졌습니까?

나는 주변을 둘러 보았지만 Uri를 사용하려고 시도했지만 분명히 작업에 대한 특정 사용 권한을 부여해야하므로 더 이상 허용되지 않으므로 FileProvider가 권장되지만 솔직히 초보자에게는 너무 어렵습니다. 나를. 나는 몇 시간 동안 노력했다.

MainActivity

public class MainActivity extends AppCompatActivity { 

int CAPTURE_REQUEST; 
Button button; 
Bitmap thumbnail; 

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

    button = (Button) findViewById(R.id.button); 

    button.setOnClickListener(new Button.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAPTURE_REQUEST); 
     } 

    }); 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (requestCode == CAPTURE_REQUEST) { 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      sendImage(); 
     } 
    } 
} 


private void sendImage() { 
    Intent intent = new Intent(MainActivity.this, NextActivity.class); 
    intent.putExtra("image", thumbnail); 
    startActivity(intent); 
}} 

NextActivity

public class NextActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ImageView imageView = (ImageView) findViewById(R.id.imageView); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_next); 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     Bitmap image = (Bitmap) extras.get("image"); 
     if (image != null) { 
      imageView.setImageBitmap(image); 
     } 
    } 
}} 
+0

sendImage() 함수에 올바른 이미지가 포함되어 있습니까? –

+0

나는 그렇게 믿을 것이다. 하지만, 안드로이드 스터디는 비트 맵 썸네일 = (Bitmap)을 선언했을 때 sendImage()에서 사용하더라도 다른 어느 곳에서도 사용되지 않는다고 말합니다. –

답변

2

변경 onActivityResult를

super.onActivityResult(requestCode, resultCode, data); 
if (resultCode == RESULT_OK) { 
    if (requestCode == CAPTURE_REQUEST) { 
     thumbnail = (Bitmap) data.getExtras().get("data"); 
     sendImage(); 
    } 
} 

에 로컬 선언하여 전역 변수를 무시한다.

관련 문제