Question

Bonjour les autres programmeurs BB,

Si vous regardez l'application Native Contacts (AddressBook) sur un téléphone BlackBerry 6 avec écran tactile - il a un comportement très naturel:

  1. Sur un court appuyez sur l'action par défaut est en cours d'exécution - Affichage de l'entrée d'adresse sélectionnée
  2. Sur une longue touche et maintenir un menu avec plusieurs actions s'affiche:

Addressbook

J'essaie de créer moi-même une application avec un champ linet et un comportement similaire (et intuitif): Exécutez l'action par défaut sur un bref appuyez sur et affichez un menu au milieu de l'écran avec plusieurs actions secondaires sur une touche plus longue.

J'ai beaucoup recherché et malheureusement réussi à créer une application de test avec un comportement de comportement exactement opposé:

J'écoute une touchestture.hover et exécuter editmeu.run (). Et pour le menu court, un menu est venu seul (je n'ai pas encore trouvé, qu'est-ce qui le fait apparaître, une méthode en écran / écran?). J'ai essayé d'exécuter OnMenu (0) mais le menu apparaît dans le coin supérieur / droit au lieu du centre d'écran.

MyList app

Ci-dessous est mon code de test très simple MyList.java, aidez-moi s'il vous plaît à le réparer:

package mypackage;

import java.util.*;
import net.rim.device.api.collection.*;
import net.rim.device.api.collection.util.*; 
import net.rim.device.api.system.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.decor.*;
import net.rim.device.api.util.*;

public class MyList extends UiApplication {
    public static void main(String args[]) {
        MyList app = new MyList();
        app.enterEventDispatcher();
    }

    public MyList() {
        pushScreen(new MyScreen());
    }
} 

class MyScreen extends MainScreen {

    ObjectListField myList = new ObjectListField() {
        protected boolean touchEvent(TouchEvent event) {
            if (event.getEvent() == TouchEvent.GESTURE) {
                TouchGesture gesture = event.getGesture();
                if (gesture.getEvent() == TouchGesture.HOVER) {
                    System.err.println("XXX hover=" + gesture.getHoverCount() + ", index=" + myList.getSelectedIndex());
                    editMenu.run();
                    // onMenu(0);
                    return true;
                }
            }
            return super.touchEvent(event);
        }
    };

    private final MenuItem addMenu = new MenuItem("Add item", 0, 0) {  
        public void run() { 
            Status.show("Adding new item");
        }
    };

    private final MenuItem editMenu = new MenuItem("Edit item", 1, 0) {  
        public void run() { 
            Status.show("Editing existing item: " + myList.getSelectedIndex());
        }
    };

    private final MenuItem removeMenu = new MenuItem("Remove item", 2, 0) {  
        public void run() { 
            Status.show("Removing existing item: " + myList.getSelectedIndex());
        }
    };


    public MyScreen() {
        setTitle("How to display menu on long click?");
        myList.set(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", }); 
        add(myList);

        addMenuItem(addMenu);
        addMenuItem(editMenu);
        addMenuItem(removeMenu);
    }
}

Merci! Alex

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top