2017-10-20 3 views
0

私は来て、助けを求める人がいると申し訳なく思っていますが、私はこの問題をしばらく取り留めています。カメラからの画像が2回目のアクティビティで表示されない

MainActivityからボタンを押してカメラに入れて写真を撮っています。その後、同じ画像のプレビューがある次のアクティビティに移動します。しかし、私が次の活動に着くたびに、イメージは表示されず、ただのプレースホルダーになります。私は間違って何をしていますか?コード内に何か不足していますか?

私は周りを見ていてUriを使用しようとしましたが、特定の権限を与える必要があるため、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

私はそう信じるでしょう。しかし、私は、Androidの研究では、ビットマップサムネイル=(ビットマップ)yada yadaを宣言すると、sendImage()でそれを使用しても、 –

答えて

2

変更onActivityResult

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

にローカル宣言を使用してグローバル変数を上書きしています。

関連する問題