2015-01-01 1 views
0

Я пытаюсь сделать снимок из галереи на диалоге, но не смог. Я не могу вызвать метод startActivityResult() для переопределения в диалоге. Кто-нибудь знает способ сделать это на Dialog?Как сделать снимок из галереи на диалоге? - Android

Вот мой код. (Мне нужно сделать это в buttonG.setOnClickListener())

public class AddBirthdayDialog extends Dialog { 

private Context context; 
String name; 
String sname; 
private int day; 
private int month; 
private int year; 
private byte[] imageByte; 
private Bitmap imageBitmap; 
private int RESULT_LOAD_IMAGE = 1; 

final EditText textName; 
final EditText textSname; 
final DatePicker birthDate; 

private DB myDB; 
private SQLiteDatabase database; 
private Person person = new Person(); 

public AddBirthdayDialog(final Context context) { 
    super(context); 
    this.context = context; 

    setCanceledOnTouchOutside(false); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.addbirthday_layout); 

    myDB = new DB(context); 

    textName = (EditText) findViewById(R.id.editTextname); 
    textSname = (EditText) findViewById(R.id.editTextsname); 
    birthDate = (DatePicker) findViewById(R.id.datePicker); 

    Button buttonG = (Button) findViewById(R.id.buttonUploadG); 
    buttonG.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      **//Need to call gallery and take a photo's bitmap or byte[] here.** 
     } 
    }); 


    Button buttonC = (Button) findViewById(R.id.buttonUploadC); 
    buttonC.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 



    Button cancelButton = (Button) findViewById(R.id.cancelbutton); 
    cancelButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      dismiss(); 

     } 
    }); 

    Button save = (Button) findViewById(R.id.buttonadd); 
    save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      name = textName.getText().toString(); 
      sname = textSname.getText().toString(); 

      day = birthDate.getDayOfMonth(); 
      month = birthDate.getMonth()+1; 
      year = birthDate.getYear(); 
      final String dayStr = String.valueOf(day); 
      final String monthStr = String.valueOf(month+1); 
      final String yearStr = String.valueOf(year); 

      person.setName(name); 
      person.setSname(sname); 
      person.setDay(day); 
      person.setMonth(month); 
      person.setYear(year); 
      person.setDateStr(dayStr + "/" + monthStr + "/" + yearStr); 

      myDB.addBirthday(person); 
      if(context instanceof MainActivity) 
      ((MainActivity)context).onResume(); 
      dismiss(); 

     } 
    }); 
} 
} 

Заранее спасибо :)

ответ

0

Что такое контекст? Если это деятельность, вы можете начать деятельность с вашей контекстной деятельности и обрабатывать onActivityResult в контекстуальной деятельности

1

внутри класса:

@SuppressLint("NewApi") 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case SELECTED_PICTURE: 
     if (resultCode == RESULT_OK) { 
      Uri uri = data.getData(); 
      String[] projection = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = getContentResolver().query(uri, projection, 
        null, null, null); 
      cursor.moveToFirst(); 
      int columnIndex = cursor.getColumnIndex(projection[0]); 
      String filePath = cursor.getString(columnIndex); 
      cursor.close(); 
      selectedImage = BitmapFactory.decodeFile(filePath); 
      d = new BitmapDrawable(selectedImage); 
      iv.setBackground(d); 
      update.setVisibility(View.VISIBLE); 
     } 
     break; 
    } 
} 

внутри OnClick:

Intent i = new Intent(Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(i, SELECTED_PICTURE); 

Глобальные переменные :

private static final int SELECTED_PICTURE = 1; 
Bitmap selectedImage;