0

私のシナリオでは、ギャラリーから画像を選択し、同じレイアウトの imageView に表示し、画像を使用して別のアクティビティに処理できます。しかし、インテントボタンをクリックしたときに画像を選択しなかった場合、強制停止します。

誰がこれを解決するアイデアを持っていますか?

public void onCreate(Bundle savedInstanceState){

    super.onCreate(savedInstanceState);
    setContentView (R.layout.browse_page);

    //action for browse Image

        Intent intent = new Intent();       
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);


    //declare image and button
    image = (ImageView) findViewById (R.id.image);
    chooseNewImage = (Button) findViewById (R.id.chooseNewImage);
    grayScale = (Button) findViewById (R.id.greyscale);

    //back to previous page
    chooseNewImage.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            finish();
        }
    });

    //go to set the image to grayScale
    grayScale.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

                Intent greyScale = new Intent(browsePage.this, grayScale.class);
                greyScale.putExtra("imagePath", path_selectedImage);
                startActivity(greyScale);

        }
    }); 
}

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK && requestCode == SELECT_PICTURE) {


                    Uri_selectedImage = data.getData();
                    path_selectedImage = getPath(Uri_selectedImage);                   
                    image.setImageURI(Uri_selectedImage);
                    System.out.println(path_selectedImage);
                    Toast.makeText(getBaseContext(), "Your selected picture", Toast.LENGTH_SHORT).show(); 
             }


    }

    private String getPath(Uri uri) {
        // TODO Auto-generated method stub
        String[] project = {MediaStore.Images.Media.DATA};
        Cursor c = managedQuery(uri, project, null, null, null);
        startManagingCursor(c);
        int column_index = c.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        c.moveToFirst();
        return c.getString(column_index);


}

画像を選択せず​​にグレースケール ボタンを押すと、強制的に停止します。try-catchを入れる必要はありますか?

4

1 に答える 1

0
 //go to set the image to grayScale     
 grayScale.setOnClickListener(new View.OnClickListener() {
       public void onClick(View v) {

          if (path_selectedImage==null){
             // show toast here
          } else {     
             Intent greyScale = new Intent(browsePage.this,grayScale.class);
             greyScale.putExtra("imagePath",path_selectedImage);
             startActivity(greyScale);          
       }
 });  
于 2012-05-22T09:04:02.487 に答える