3

Mainミッドレット( )クラスの外で、画面に表示されているものを設定できるクラスを作成しようとしています(フォームをディスプレイに設定するなど)。したがって、 '変数
を入力して変更する必要があると思いましたが、エラーになりました。Maindisplay

プログラム全体は次のとおりです。

//Main.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Main extends MIDlet {

    public Other othr = new Other(this);
    public Display display = Display.getDisplay(this);
    public void startApp() {
        display.setCurrent(othr);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}


//Other.java
import javax.microedition.lcdui.*;
public class Other extends Canvas{

    Form a = new Form("a");
    public TextEdit(Main mc){
        //HERE IT IS!
        mc.display.getDisplay(mc).setCurrent(a);
        //If I comment out the above, I get no error.

    }
    protected void paint(Graphics g) {
         //Nothing yet
    }

}

そして、私はいつも「アプリケーションが予期せず終了しました」というエラーを受け取ります。

また、に置き換えmc.display.getDisplay(mc).setCurrent(a);てみましたがDisplay.getDisplay(mc).setCurrent(a);、エラーは表示されませんが、フォームaがまったく表示されません。

ばかげた間違いかもしれませんが、私は迷子になります

私に何ができる?

4

2 に答える 2

3

それはあなたのコードの小さな間違いです。次のようにコードを変更します。

//Main.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Main extends MIDlet {

    public Other othr ;
    public Display display ;
    public void startApp() {
         display= Display.getDisplay(this);
        othr=new Other(this);
        display.setCurrent(othr);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}

そして、他の人がこのように見えることを確認し、フォームまたはキャンバスの両方が異なることを確認します。

このようにコードを作成する場合

//Other.java
import javax.microedition.lcdui.*;
public class Other {

    Form a ;
    public Other(Main mc){
        //HERE IT IS!
       a=new Form("a");
        Display.getDisplay(mc).setCurrent(a);
        //If I comment out the above, I get no error.

    }

}

Canvasの場合はこれを確認してください

/Other.java
import javax.microedition.lcdui.*;
public class Other extends Canvas{

     public Other(Main mc){
        //HERE IT IS!
        Display.getDisplay(mc).setCurrent(this);
        //If I comment out the above, I get no error.

    }
    protected void paint(Graphics g) {
         //Nothing yet
    }

}

これはあなたを助けます、注::CanvasとFormsの違いを確認してください。

于 2012-04-25T05:12:40.013 に答える
0

交換

 public Other othr = new Other(this);
 public Display display = Display.getDisplay(this);

public Other othr;
public Display display;

public Main()
{
  othr = new Other(this);
  display = Display.getDisplay(this)
}
于 2012-04-24T22:16:56.923 に答える