2017-03-07 4 views
1
ausgewählt werden

Was ist los?Galeriebild kann nicht aus Fragment

Ich versuche, ein Foto aus der Galerie auszuwählen und dann dieses Foto als Bild von meinem ImageButton festzulegen. Das sollte ziemlich einfach sein, aber irgendwie vermassele ich es. Dies ist, wie ich versuche: Ich habe ein Fragment, in dem ich meine Registerkarten einrichten und meine Image:

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    TabHost host = (TabHost)getView().findViewById(R.id.tabHost); 
    host.setup(); 

    //Tab 1 
    TabHost.TabSpec spec = host.newTabSpec("Foto"); 
    spec.setContent(R.id.tab1); 
    spec.setIndicator("Foto"); 
    host.addTab(spec); 

    //Tab 2 
    spec = host.newTabSpec("Sentimento"); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("sentimento"); 
    host.addTab(spec); 

    //Tab 3 
    spec = host.newTabSpec("Medição"); 
    spec.setContent(R.id.tab3); 
    spec.setIndicator("Medição"); 
    host.addTab(spec); 

    cancelBtn = (ImageButton)getView().findViewById(R.id.cancel_post_btn); 
    saveBtn = (ImageButton)getView().findViewById(R.id.save_post_btn); 
    insertPostText = (EditText)getView().findViewById(R.id.insert_post_text); 

    postImageBtn = (ImageButton)getView().findViewById(R.id.post_img_btn); 
    postImageBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT); 
      galleryIntent.setType("image/*"); 
      startActivityForResult(galleryIntent, GALLERY_REQUEST); 
     } 
    }); 
} 

Das ist mein onActivityResult Methode mit meinen Logs:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.d("---------", "activity result"); 
    if (requestCode == GALLERY_REQUEST && requestCode == getActivity().RESULT_OK){ 
     Log.d("-----------", "result ok"); 
     Uri imageUri = data.getData(); 
     postImageBtn.setImageURI(imageUri); 
    } else { 
     Log.d("-----------", "result not ok"); 
     Log.d("----------", String.valueOf(requestCode)); 
     Log.d("----------", String.valueOf(RESULT_OK)); 
    } 
} 

Das sind meine log Ergebnisse:

03-07 14:23:50.767 30717-30717/? D/---------: activity result 
03-07 14:23:50.767 30717-30717/? D/-----------: result not ok 
03-07 14:23:50.767 30717-30717/? D/----------: 1 
03-07 14:23:50.767 30717-30717/? D/----------: -1 

Und schließlich das ist mein android-Manifest:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Habt ihr irgendwelche Ideen, warum passiert das?

+0

Does Galerie geöffnet? App stürzt ab? – tahsinRupam

+0

Ja, die Galerie öffnet sich und nein, die App stürzt nicht ab. Ich kann meinen ImageButton jedoch nicht aktualisieren, und ich denke, das liegt daran, dass RESULT_OK gleich -1 ist – Rob

Antwort

0

Das hat mich wirklich schämen macht aber immer noch muss ich die Antwort schreiben gerade falls jemand diese Frage erreicht . Ich sollte

getActivity().RESULT_OK 

mit

resultCode 

zu vergleichen, so ist dies, wie es funktioniert jetzt:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
Log.d("---------", "activity result"); 
if (requestCode == GALLERY_REQUEST && resultCode == getActivity().RESULT_OK){ 
    Log.d("-----------", "result ok"); 
    Uri imageUri = data.getData(); 
    postImageBtn.setImageURI(imageUri); 
} else { 
    Log.d("-----------", "result not ok"); 
    Log.d("----------", String.valueOf(requestCode)); 
    Log.d("----------", String.valueOf(RESULT_OK)); 
} 
} 
0

Versuchen Sie, Ihre Galerie Absicht diese zu ändern:

Intent pickPhoto = new Intent(Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     if (isAdded() && pickPhoto.resolveActivity(getActivity().getPackageManager()) != null) 
      startActivityForResult(pickPhoto, requestCode); 

Welche verwendet einen ContentProvider Stil mech

Verwandte Themen