Frage

Ich bin irgendwie verwirrt, wie ein FieldChangeListener im Blackberry JDE zu implementieren. Ein Weg, hat mir meine Hauptklasse machen FieldChangeListener implementieren und haben dann eine fieldchanged Methode innerhalb von ihm, und ein anderer hat mich tun:

    FieldChangeListener listenerUS = new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
System.out.println("Something changed!");
pushScreen(_newScreen);
}
};

So oder so, wenn ich versuche, eine Methode aufzurufen (wie pushscreen oder eine benutzerdefinierte Methode, die ich geschrieben habe), erhalte ich einen Laufzeitfehler. Im Debug-Modus, keiner meiner print-Anweisungen werden entweder angezeigt. Allerdings, wenn ich die fieldChanged Methode völlig zu entfernen, wird es nicht einmal kompilieren, so dass ich "m hübsch sicher, dass es zu sehen, den Code?

Ich habe den Hörer auf die Schaltfläche hinzugefügt ich es angeschlossen will entweder mit:

            but_temp.setChangeListener(this);

(im ersten Fall) oder durch listenerUS setzen.

Alles scheint süchtig zu werden, aber meiner Druck Aussagen zeigen, und wenn ich eine Methode aufrufen, erhalte ich einen Laufzeitfehler.

Ist das sinnvoll? Bin ich gerade völlig verwirrt, wie auf dem Blackberry Hörer zu benutzen?

http://pastie.org/618950

Es gibt eine Kopie von meinem Code als Ganzes ...

War es hilfreich?

Lösung 3

Ich bin super verwirrt, aber ich schaffte es, Sachen zu regeln. Ich habe eine neue Klasse von Grund auf, und dann einfach kopiert und eingefügt meinen alten Code hinein. Funktioniert alles. Das einzige, was ich geändert wurde nur Klassen importieren, die Eclipse-die notwendig war (bevor ich aus verschiedenen Tutorials einige Import-Anweisungen hatte, etc., so wurden einige möglicherweise nicht verwendet werden.)

Ist es möglich, ich etwas importieren, die Dinge zum Absturz verursacht wurde?

Ich würde wirklich lieber die meisten meinen Code auf dem Bildschirm habe selbst, sondern versucht, dass stürzt die ganze Sache, bevor ich auch laden kann. Etwas über den XML-Parser Ich bin nicht glücklich zu sein.

http://pastie.org/621932

Es ist der modifizierte Code. Ich bin wirklich frustriert, weil ich weiß, dass es einige inhärente Verständnis dieses Rahmenwerk ist, das ich nicht grokking, und dass die meisten meiner Probleme daraus kommen. Ich nehme nur Praxis wird mir helfen, wenn ^ _ ^ ;;

Andere Tipps

Ich schaute auf den Code und nichts eklatant falsch sprang auf mich. Allerdings würde ich nicht die Hauptanwendungsklasse bezeichnet die Aufgaben des FieldChangeListener zu sein. Es ist nicht etwas, das es sollte bewusst sein müssen. Das Beste, was ich für Sie tun können ist eine Beispiel-App zur Verfügung stellen, die die FieldChangeListener Schnittstelle für einen Button implementiert. Es ist keine Lösung, sondern vielleicht mit Ihrem besseren Wissen des Codes werden Sie in der Lage sein, etwas zu wählen, dass als dieses Beispiel unterscheidet. Hoffe, es hilft.

import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.FieldChangeListener;

/**
 * Test implementation of ButtonField.
 */
public class TestAppMain extends UiApplication 
{
    /**
     * Default Constructor.
     */
    private TestAppMain() {        
        pushScreen(new AppScreen());
    }

    /**
     * App entry point.
     * @param args Arguments.
     */
    public static void main(String[] args) {
        TestAppMain app = new TestAppMain();
        app.enterEventDispatcher();
    }

    /**
     * Main application screen.
     */
    private static class AppScreen extends MainScreen 
    {
        /**
         * Default constructor.
         */
        public AppScreen() {
            LabelField title = new LabelField("Button Test Demo",
                    LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH);
            setTitle(title);

            // Create a button with a field change listener.
            FieldChangeListener listener = new FieldChangeListener() {
                public void fieldChanged(Field field, int context) {
                    ButtonField buttonField = (ButtonField) field;
                    System.out.println("Button pressed: " + buttonField.getLabel());
                }
            };
            ButtonField buttonField = new ButtonField("Test Button", ButtonField.CONSUME_CLICK);            
            buttonField.setChangeListener(listener);
            add(buttonField);
        }               

        /**
         * Handle app closing.
         */
        public void close() {
            Dialog.alert("Goodbye!");
            System.exit(0);
            super.close();
        }
    }
}

ich mit Fostah stimmen (+1), ist es üblich, FieldChangeListener in Field, Manager oder Bildschirm, oder verwenden Sie einen eigenständigen FieldChangeListener zu implementieren.
Auch, um Push / Pull-Bildschirm aus Feld:

UiApplication.getUiApplication().pushScreen(nextScreen);

Siehe Wie navigieren zurück zum vorherigen Bildschirm im Blackberry-Emulator?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top