2016-12-10 3 views
0

Ich bin neu bei Android und ich schreibe eine Fotoalbum-App. Ich versuche, ein Bild vom Benutzer zu erhalten und es in einem Album zu speichern. Hier sind meine Code-Schnipsel aus meiner AlbumOptions Aktivität:startActivityForResult() wird nicht aufgerufen

public void add(View v){ 
    Intent i = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
    startActivityForResult(Intent.createChooser(i, "Choose Photo To Add"),RESULT_LOAD_IMAGE); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) 
    { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     final String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     //get a name for the photo 
     final EditText pName = new EditText(this); 
     new AlertDialog.Builder(this) 
       .setTitle("Create Album") 
       .setMessage("Enter album name:") 
       .setView(pName) 
       .setPositiveButton("Add Photo", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         String name = pName.getText().toString(); 

         //check if photo name already exists, if not create it 
         if(!album.checkName(name)) 
         { 
          Photo p = new Photo(name, picturePath, ""); 
          photoList.add(p); 
          adapter.notifyDataSetChanged(); 
         } 
         //prompt error that photo name is taken 
         else 
         { 
          AlertDialog alertDialog = new AlertDialog.Builder(AlbumOptions.this).create(); 
          alertDialog.setTitle("Error"); 
          alertDialog.setMessage("Photo name already exists!"); 
          alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", 
            new DialogInterface.OnClickListener() { 
             public void onClick(DialogInterface dialog, int which) { 
              dialog.dismiss(); 
             } 
            }); 
          alertDialog.show(); 
         } 
        } 
       }); 

    } 
} 

Die Add-Methode aufgerufen wird, wenn der Benutzer auf die Schaltfläche Hinzufügen klickt ein Foto auf das offene Album hinzuzufügen. Bei Verwendung des Debugger-Tools wird das Programm jedoch über startActivityForResult() weitergeleitet. Ich habe verschiedene Beiträge durchgesehen, um zu sehen, was schief läuft und ich kann nicht herausfinden, was falsch läuft. RESULT_LOAD_IMAGE ist> 0, und ich habe meine Manifest-Datei überprüft, wie es von vielen der Posts, die ich gesehen habe, vorgeschlagen wurde. Jede Rückmeldung wird geschätzt.

+0

geht es zur Auswahl? –

+0

es Pop-up-Fotos zur Auswahl, aber wenn ich eins auswähle, tut es nichts – Hamon148

+1

Haben Sie etwas in 'onActivityResult' protokolliert? Ist dieser Code in einem Fragment oder einer Aktivität enthalten? –

Antwort

0

versuchen Sie diesen code.Might das wird Ihnen helfen.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode==SELECT_IMAGE){ 
     if(resultCode==RESULT_OK && null!=data){ 
       //do whatever you want. 
      } 
    } 

Zuerst ändern Sie die @Override-Public zu @Override geschützt. und setze das auch.

Intent image=new Intent(); 
    image.setType("image/*"); 
    image.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(image,"select file"),SELECT_IMAGE); 

Ändern Sie diese Zeile .Sie haben darauf hingewiesen, dass RESULT_LOAD_IMAGE> 0 ist, das 0 bis = ändern;

public int SELECT_IMAGE=0; 
+0

Immer noch das gleiche Verhalten – Hamon148

+0

Ich habe die Antwort bearbeitet. Versuche dies. – Dharmishtha

+0

Scheint funktioniert zu haben, könnten Sie erklären, warum die Änderung auf 0 irgendetwas verändern würde? – Hamon148