2014-12-21 19 views
21

tanzim edilmiş bitirmek çalışıldı. Adaptör bir metin görünümü ve bir görüntü düğmesi içerir. Resim düğmesine tıkladığınızda bir açılır menü başlattım. Her şey iyi çalışıyor. Ancak, açılır menüden seçenekleri belirlerken, "Bir giriş olayını bitirmek için girişimde bulunuldu, ancak giriş alıcısı zaten atıldı" mesaj kutusu görüntüleniyor ve hiçbir şey olmuyor. arayüzünde OnClickListenerbir giriş olay ama giriş olay alıcısı zaten benim liste görünümü için özel bir adaptör var

public class MyAdapter extends ArrayAdapter<String> { 

    public MyAdapter(Context context, int resourceId) { 
     super(context, resourceId); 
    } 

    public MyAdapter(Context context, int resourceId, List<String> string) { 
     super(context, resourceId, string); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if(v == null) { 
      LayoutInflater inflater = LayoutInflater.from(getContext()); 
      v = inflater.inflate(R.layout.adapter_layout, null); 
     } 

     String str = getItem(position); 

     if(str != null) { 
      TextView textView = (TextView)v.findViewById(R.id.editText1); 
      textView.setText(str); 
      ImageButton button = (ImageButton)v.findViewById(R.id.imageButton1); 
      button.setOnClickListener(new Custom_Adapter_Button_Click_Listener(getItemId(position), getContext())); 
     } 

     return v; 
    } 
} 

Ben mesajdan anlaşılan Ne

public class Custom_Adapter_Button_Click_Listener implements OnClickListener, OnMenuItemClickListener { 

    long position; 
    Context context; 

    public Custom_Adapter_Button_Click_Listener(long id, Context appcontext) { 
     position = id; 
     context = appcontext; 
    } 



    @Override 
    public boolean onMenuItemClick(MenuItem item) { 
     AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo(); 
     int index = info.position; 
     Log.d("ItemClicked", "selected index : " + index); 
     switch(item.getItemId()) { 
     case R.id.option : 
      Toast.makeText(context, "Selected index : " + index, Toast.LENGTH_SHORT).show(); 
      return true; 

     default : 
      Toast.makeText(context, "Default", Toast.LENGTH_SHORT).show(); 
      return false; 
     } 
    } 

    @Override 
    public void onClick(View v) { 
     PopupMenu popup = new PopupMenu(context, v); 
     MenuInflater popupInflater = popup.getMenuInflater(); 
     popupInflater.inflate(R.menu.contextmenu, popup.getMenu()); 
     popup.show(); 

    } 

} 

bazı şey yürütmek alır onMenuItemClick önce olay() yeme olmasıdır olduğunu. Uygulamamı nexus 5 android 5.0.1 sürümünde çalıştırıyorum.

ben here gelen problemin benzer tür bir çözüm bulmak. Ama bu yaklaşımı benim problemime nasıl kullanacağımı anlamıyorum.

yerine açılan menü bağlam menüsünü kullanarak çalıştı, ancak yine de ben "zaten elden çıkarılan bir giriş olayını ama giriş olay alıcıyı bitirmek için çalışıldı" Aynı mesajı vardı bağlam menü öğesi tıkladıktan sonra.

Lütfen bana yardım ... !!

+3

ben aşağıdaki senaryoda bu hata mesajını vardır: Aktivite Bir Dialog oluşturur. Dialog bir KeyListener atandı. Back Düğmesine basılır ve Activity + Dialog kapalıdır. Görünüşe göre, "giriş olayı" tamamlanmadan önce Diyalog kapalıdır. – Pawel

cevap

5

ben başka bir açıdan bu sorunu isabet ettik; Bir menüden servis başlatmaya çalışıyor. Varsayılan olarak, hata ayıklama mesajı çok alakalı değil. Benim çözümüm, logcat'teki filtreleri yok etmekti ve daha sonra ilk etapta hizmeti başlatamayacağına dair başka bir mesaj aldım (manifesto dosyasına koymayı unuttum). Handler.postDelayed() yöntemi kullanılarak, hatta daha iyi

mHandler.post(new DisplayToast(this, "Epic message!")); 

Veya:

public class DisplayToast implements Runnable { 
    private final Context mContext; 
    private final String mText; 

    public DisplayToast(Context mContext, String text) { 
     this.mContext = mContext; 
     mText = text; 
    } 

    public void run() { 
     Toast.makeText(mContext, mText, Toast.LENGTH_SHORT).show(); 
    } 
} 

ve Handler nesne aracılığıyla diyoruz: Senin durumunda

, bir sınıfa tost ekranı kaydırmak gerekebilir .

HTH,

+0

"Logcat'ta filtreleri nasıl yok eder"? – Kidburla

+0

@Kidburla, AS yılında "Android Monitor" konulu, "Hayır filtreleri" yerine "Yalnızca seçili uygulamayı" seçeneğini seçin. –

İlgili konular