onActivityResult in non chiamato nella class esteso da ArrayAdapter

Ho fatto la ricerca, ma non riesco a trovare una risposta utile in Internet. Ecco perché sollevo la query. Mi piace caricare la camera e catturare l'image nel metodo getView di una class ArrayAdapter personalizzata. La camera viene caricata e catturata, ma non viene mai chiamata onActivityResult() . Il mio codice è come mostrato di seguito.

  public View getView(int position, View convertView, ViewGroup parent) { View vi=convertView; ViewHolder viewHolder=new ViewHolder(); LayoutInflater inflater = (LayoutInflater) this.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(vi==null){ vi = inflater.inflate(R.layout.list_row, parent, false); viewHolder.id=(TextView)vi.findViewById(R.id.title); viewHolder.thumbnailImage=(ImageView)vi.findViewById(R.id.list_image); viewHolder.arrow=(ImageView)vi.findViewById(R.id.list_arrow); vi.setTag(viewHolder); } else viewHolder=(ViewHolder) vi.getTag(); // Setting all values in listview viewHolder.id.setText(listIDs.get(position)); viewHolder.thumbnailImage.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); ((Activity)context).startActivityForResult(cameraIntent, CAMERA_REQUEST); } }); return vi; } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { // Bitmap photo = (Bitmap) data.getExtras().get("data"); // imageView.setImageBitmap(photo); } } 

Quindi la class adattatore personalizzato viene triggersta dalla class ListFragment come

  • Come utilizzare lo zxing core come libreria sul mio progetto Android?
  • Funzionalità di disconnessione in android
  • Eccezione fatale per il riloopssta: java.lang.ArrayIndexOutOfBoundsException
  • Come aggiungere i dati a Google calendario in modo programmato in android?
  • Scalatura adeguata di un sito web su dispositivi Android tramite WebView
  • Utilizzo di LogCat su JellyBean
  •  customList_Adaptor adapter = new customList_Adaptor( getActivity(), R.layout.list_row, listIDs); 

    Come posso modificare in modo che sia chiamato il metodo onActivityResult (). Grazie

    3 Solutions collect form web for “onActivityResult in non chiamato nella class esteso da ArrayAdapter”

    onActivityResult appartiene Activity . È ansible sovrascrivere solo nel context Actvity/ListActivity . Quello che puoi fare è tenere un riferimento alla sottoclass di ArrayAdapter all'interno di Actvity/ListActivity , creare un metodo all'interno di esso per ricall quando viene onActivityResult e le condizioni sono soddisfatte

    Innanzitutto creare l' object della CustomArrayAdapter class nella class che deve extends con Activity o ListActivity perché onActivityForResult è un metodo di class Activity . Nel tuo caso puoi seguire questi passaggi:

    1) Fai una class

     import android.graphics.Bitmap; public class Items { // You can give any name to this class private Bitmap bitmap; public Bitmap getBitmap() { return bitmap; } public void setBitmap(Bitmap bitmap) { this.bitmap = bitmap; } } 

    2) Nella class (che si estende con Attività o ListActivity) è necessario creare l'object della class CustomArrayAdapter come:

     public class YourClassName extends Activity {\ public static final int CAMERA_REQUEST = 1; // here integer value 1 must be same // as you gave in CustomAdapterClass //First make an arrays list of the class created above ArrayList<Items> camera_pic_arrays = new ArrayList<Items>(); // make object of CustomArrayAdapter Class CustomArrayAdapter adapter = new CustomArrayAdapter(this, camera_pic_arrays); /* It is assumed by me that you should have a constructor of your CustomArrayAdapter with two parameters like public CustomArrayAdapter(Context ctx, ArrayList<Items> list){ this.context = context; this.list = list; LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } */ // now here, write onActivityResult code @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case CAMERA_REQUEST: { if (resultCode == RESULT_OK) { Bitmap bitmap = (Bitmap) data.getExtras().get("data"); Items item = new Items(); item.setBitmap(bitmap); camera_pic_arrays.add(item); adapter.notifyDataSetChanged(); //you must notify this // line is very importnt } break; } } } 

    Spero Questo functionrà per te, ho fatto lo stesso e funziona bene per me ….

    L'attività onActivityResult verrà chiamata alla tua attività. Non sull'adattatore di matrix.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.