0

私はJ2MEを初めて使用し、ユーザーが登録、ログインして、いくつかの操作を実行できるメンバー専用画面が表示されるモバイルアプリケーションを構築しています。

(私は Web 開発に興味があるので、Web アプローチを使用している箇所を親切に訂正してください。また、基本的な Java の概念を明確に理解していますが、これまでモバイルアプリを構築したことはありません)

ここまでで、ユーザー名とパスワードのテキスト ボックス、および [ログイン] ボタンと [終了] ボタンを含むログイン フォームを含む最初の画面を作成しました。

私が現在直面している問題は次のとおりです。

  1. 登録、ログイン、および終了へのアクセスを同時に提供するにはどうすればよいですか (電話機には一度に 2 つのボタンしか持てないようです)。コマンド ボタンまたは通常の「ページに表示される Web のようなボタン」として提供しますか? 適切と思われるオプションの方法を教えてください。

  2. モバイル アプリケーションで http 経由でデータを送受信するにはどうすればよいですか? サンプルコードをいただければ幸いです。

  3. さまざまな画面を管理するにはどうすればよいですか? Web 開発では、ページを作成してリンクするだけです。この場合、登録ボタンを押したときに登録画面を表示するにはどうすればよいですか?ログイン成功時のホーム画面は?または失敗した場合のエラーメッセージ?

画面を動的に生成するさまざまな関数がありますか? 画面が要求されるたびにそれらを呼び出しますか?

簡単なサンプルは高く評価されます。

4

1 に答える 1

1

J2MEでは、

画面に表示される内容を決定する表示オブジェクトがあります。表示できるものがあります。たとえば、フォーム、リスト、テキストボックスなど。したがって、できることは、次の表示を作成できることです。

public class IndexScreen extends List implements CommandListener {

    //This will contain the options 
    //1. Register
    //2. Login
    //3. Exit
}


public class RegsterScreen extends Form implements CommandListener {

    //This will contain register fields and submit cancel command buttons

}

public class LoginScreen extends Form implements CommandListener {

   //This will contain Login specific controls
}

これらの表示可能なオブジェクトの準備ができたら、コマンド ボタンのクリックなどのイベントで表示を変更し続けることができます。

public void commandAction(Command c, Displayable d) {

    if (c == OK) {
        nextScreen = new RegisterScreen();
        display.setCurrent(nextScreen);
    }
    if (c == BACK) {
        display.setCurrent(prevScreen);
    }

データの送受信については、以下が役立つ場合があります....

package madmin.client;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Display;
import madmin.res.Globals;


public class ClientRequest {

private Client client;
private Display display;
private String requestServlet;
private String requestCode;
private String requestId;
private String userId;
private String url;
private String response;
private String parameterOne;



public ClientRequest() {

}

 public boolean sendRequest() {

      boolean result = false;
      userId = Globals.getUserId();
      url = Globals.getURL() + requestServlet + "?requestCode=" + requestCode + "&requestId=" + requestId + "&userId=" + userId + "&clientIP=" + client.getIpAddress() + "&clientHostName=" + client.getHostname() + "&parameterOne=" + parameterOne;

      System.out.println("User Id value in ClientRequest " + userId);


      System.out.println("Start HTTP Connection");
      HttpConnection connection = null;
      InputStream inputstream = null;

       try {
            connection = (HttpConnection) Connector.open(url);
            connection.setRequestMethod(HttpConnection.GET);
            connection.setRequestProperty("Content-Type", "//text plain");
            connection.setRequestProperty("Connection", "close");

            System.out.println("Status Line COde: "+ connection.getResponseCode());
            System.out.println("Status Line Message: "+ connection.getResponseMessage());


            if(connection.getResponseCode()==HttpConnection.HTTP_OK){
                inputstream = connection.openInputStream();
                int length = (int) connection.getLength();
                if(length!=-1){
                    byte incomingData[] = new byte[length];
                    inputstream.read(incomingData);
                    response = new String(incomingData);
                }
                else {
                    ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
                    int ch;
                    while((ch = inputstream.read())!=-1){
                        bytestream.write(ch);
                    }
                    response = new String(bytestream.toByteArray());
                    bytestream.close();
                }

               System.out.println("Response:" + response.trim());

               if(response.trim().equals("Request Submitted Successfully")){
                       result = true;
               }
               else{
                    result = false;
               }
            }
            connection.close();
            if(inputstream!=null)inputstream.close();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        finally {
            if(inputstream!=null){
                try{
                    inputstream.close();
                }
                catch(Exception e){
                    e.printStackTrace();
                }
            }
        }
     return result;
 }

public Client getClient() {
    return client;
}

public void setClient(Client client) {
    this.client = client;
}

public Display getDisplay() {
    return display;
}

public void setDisplay(Display display) {
    this.display = display;
}

public String getRequestCode() {
    return requestCode;
}

public void setRequestCode(String requestCode) {
    this.requestCode = requestCode;
}

public String getRequestId() {
    return requestId;
}

public void setRequestId(String requestId) {
    this.requestId = requestId;
}

public String getRequestServlet() {
    return requestServlet;
}

public void setRequestServlet(String requestServlet) {
    this.requestServlet = requestServlet;
}

public String getResponse() {
    return response;
}

public void setResponse(String response) {
    this.response = response;
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

public String getUserId() {
    return userId;
}

public void setUserId(String userId) {
    this.userId = userId;
}

public String getParameterOne() {
    return parameterOne;
}

public void setParameterOne(String parameterOne) {
    this.parameterOne = parameterOne;
}

}

と....

package madmin.client;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import madmin.res.Globals;


public class ClientResponse {

private String response;


public String getResponse(String requestId) {

         System.out.println("Start HTTP Connection");
         HttpConnection connection = null;
         InputStream inputstream = null;
         response = "";

          try{

            connection = (HttpConnection) Connector.open( Globals.getURL() + "ResponseServlet?requestId=" + requestId);
            connection.setRequestMethod(HttpConnection.GET);
            connection.setRequestProperty("Content-Type", "//text plain");
            connection.setRequestProperty("Connection", "close");

            System.out.println("Status Line COde: "+ connection.getResponseCode());
            System.out.println("Status Line Message: "+ connection.getResponseMessage());

            if(connection.getResponseCode()==HttpConnection.HTTP_OK){
                inputstream = connection.openInputStream();
                int length = (int) connection.getLength();
                if(length!=-1){
                    byte incomingData[] = new byte[length];
                    inputstream.read(incomingData);
                    response = new String(incomingData);
                }
                else {
                    ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
                    int ch;
                    while((ch = inputstream.read())!=-1){
                        bytestream.write(ch);
                    }
                    response = new String(bytestream.toByteArray());
                    bytestream.close();
                }

               System.out.println("Response:" + response.trim());

              connection.close();
              if(inputstream!=null)inputstream.close();
            }
            }
            catch(Exception e){

                e.printStackTrace();
            }

    return response;
}
}

編集:このようなもの

     public class MenuScreen extends List implements CommandListener{

     public MenuScreen() {
 append("Register", null);
     append("Login", null);
     append("Forgot password", null);


     select = new Command("Select", Command.OK, 1);
     addCommand(select);
     setCommandListener(this);

}

}

     public void commandAction(Command command, Displayable display) {

      if(command==List.SELECT_COMMAND){                 
        String menuItem = this.getString(menuIndex);
      }

      if(command==select){       
        if( menuItem.equals("Register"))
     display.setCurrent(new RegisterScreen())
 }
      }
于 2012-05-07T06:55:54.213 に答える