سؤال

وإيف استدار على 4.6.0 تطبيق بلاك بيري لأكثر من العاصفة على 4.7.0. كل يسير على ما يرام وبصرف النظر عن الأحداث مسة أحاول السيطرة عليها. I الأحداث فخ اتصال في الأسلوب أدناه التي لا كبه المفترض أن ولكن المشكلة هي بعد بلدي المنطق في touchEvent تنفيذ وإرجاع القائمة (الذي يكون تفعيلها عن طريق زر القائمة) يتم عرض دائما. لقد حاولت العودة كاذبة، صحيح وsuper.touchEvent (الرسالة) لكنه لا يزال يبدو.

وأي أفكار كيف يمكن منع قائمة من الظهور بعد محاصرة الحدث لمسة؟

protected boolean touchEvent(TouchEvent message)
{
     if (message.getEvent() == TouchEvent.CLICK)
     {
        //My code here
     }
}

وتحظى بتقدير أفكارك بكثير

هل كانت مفيدة؟

المحلول

وفقط لتوضيح الإجابة haagmm ل:

وبعد أن تم إرسال TouchEvent.CLICK إلى التطبيق الخاص بك، كما سيتم إرسال حدث navigationClick. هذا هو لأسباب التوافق، لذلك أشياء مثل ButtonFields ستعمل على جهاز لمس حتى إذا كان التطبيق لم يكتب بشكل واضح للرد على touchEvents.

إذا لم يتم استهلاك حدث navigationClick (العودة الحقيقية) من خلال حقل في التطبيق الخاص بك، سيتم عرض قائمة السياق.

إذا كنت ترى هذا السلوك عند النقر على حقل زر، والتفسير هو أن افتراضيا، ButtonFields لا تستهلك فوق الأحداث. لقد وجدت هذا هو عليه الممارسات الجيدة لبناء دائما ButtonFields مع بت نمط التالية مجموعة:

ButtonField myButtonField = 
    new ButtonField( ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY );

وكود haagmm هو حل واحد، ولكن فكرة أفضل هو نسخ كود معالجة TouchEvent.CLICK وأيضا صقه في طريقة navigationClick. بهذه الطريقة، سيكون جهاز التتبع مثل جولة بلاك بيري لا يزال قادرا على استخدام التطبيق الخاص بك.

نصائح أخرى

إذا كنت "بالنقر على" الشاشة أو ترك النقر على الفأرة في سيم سوف تؤدي الى قائمة السياق، على غرار إذا ضغطت على كرة على جهاز 4.6.

وسوف تحتاج إلى القيام بشيء مماثل لهذا في الحقل الذي مثقلة touchEvent في:

 protected boolean navigationClick(int status, int time) { return true; }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top