2016-08-17 2 views
0

Ich versuche ein Bild aus der Kombüse auszuwählen und dann zu bearbeiten, ich mache es, indem ich einen Knopf auf der Hauptaktivität drücke, der dann eine neue Aktivität startet, in der man entweder a wählen kann bilde ein Bild ein oder wähle dein eigenes aus, und wenn ich mein eigenes Bild auswählen möchte, sollte es die Galerie öffnen und ein Bild auswählen, wie kommt das irgendwie nicht hin (obwohl es vorher funktioniert hat, denke ich, ich habe gerade etwas kaputt gemacht, aber nicht wissen, was)Intent startet nicht

mein Code:

package il.popov.ecptest; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class select_activity extends ListActivity { 

ListView listView; 
Intent intent; 


@ 
Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    String[] StringArray = { 
     "Select your own", "image1", "image2", "image3", "image4", "None" 
    }; 
    setListAdapter(new ArrayAdapter <String> (this, R.layout.support_simple_spinner_dropdown_item, StringArray)); 
    intent = new Intent(this.getApplicationContext(), main_activity.class); 
    listView = getListView(); 
    listView.setTextFilterEnabled(true); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@ 
     Override 
     public void onItemClick(AdapterView <? > arg0, View arg1, int position, long arg3) { 
      processClick(position); 
     } 
    }); 
} 



public void processClick(int position) { 
    switch (position) { 
     case 0: 
      //Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
      //startActivity(i); 

      Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
      photoPickerIntent.setType("image/*"); 
      startActivityForResult(photoPickerIntent, 237); 

      //Returns to main activity , DO NOT CHANGE 
      startActivity(intent); 
      break; 
     case 1: 
      midClass.img = BitmapFactory.decodeResource(getResources(), R.drawable.image1); 
      midClass.isImageSelected = true; 
      startActivity(intent); 
      break; 
     case 2: 
      midClass.img = BitmapFactory.decodeResource(getResources(), R.drawable.image2); 
      midClass.isImageSelected = true; 
      startActivity(intent); 
      break; 
     case 3: 
      midClass.img = BitmapFactory.decodeResource(getResources(), R.drawable.image3); 
      midClass.isImageSelected = true; 
      startActivity(intent); 
      break; 
     case 4: 
      midClass.img = BitmapFactory.decodeResource(getResources(), R.drawable.image4); 
      midClass.isImageSelected = true; 
      startActivity(intent); 
      break; 
     case 5: 
      midClass.img = null; 
      midClass.isImageSelected = false; 
      startActivity(intent); 
      break; 
     default: 
      midClass.toastificate("Error in selection process"); 
      midClass.isImageSelected = false; 
      midClass.img = null; 
      break; 

    } 
} 



@ 
Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    midClass.toastificate("checking result"); 
    if (requestCode == 237 && resultCode == RESULT_OK && null != data) { 
     midClass.toastificate("Processing image"); 
     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]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     BitmapFactory.Options opt = new BitmapFactory.Options(); 
     opt.inMutable = true; 
     midClass.img = BitmapFactory.decodeFile(picturePath, opt); 
     if (midClass.img != null) { 
      midClass.isImageSelected = true; 
     } else { 
      midClass.isImageSelected = false; 
     } 

    } 
} 
} 

habe ich die folgenden Berechtigungen:

012.351.
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 
+1

Warum haben Sie zwei startActivity in Fall 0? – Stefan

+0

Der erste startet die Galerie, um ein Bild auszuwählen und der andere kehrt zur Hauptaktivität zurück, ich weiß, dass es einen besseren Weg gibt, das zu tun, aber das ist nicht mein Problem – DirtyAxe

+0

Das ist nicht, was es tut. Es startet Ihren Galerie-Picker und startet zusätzlich die Hauptaktivität. Also passiert nichts. – Stefan

Antwort

0
case 0: 
     //Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
     //startActivity(i); 

     Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
     photoPickerIntent.setType("image/*"); 
     startActivityForResult(photoPickerIntent, 237); 

     //Returns to main activity , DO NOT CHANGE 
     startActivity(intent);// Remove this line in your case 0 
+0

Einer von ihnen startet die Galerie und kehrt dann zur Hauptaktivität zurück, ich weiß, dass es effizienter gemacht werden kann, aber das ist jetzt nicht mein Problem – DirtyAxe

+0

@DirtyAxe aber keine Notwendigkeit, startActivity (Absicht) zu schreiben. Wenn Sie ein Bild auswählen, ist es wieder aktiv –