Java ME обрабатывает несколько экранов - PullRequest
0 голосов
/ 15 февраля 2011

Я создаю приложение, в котором при запуске приложения у пользователя есть возможность добавить файл в приложение, которое находится на карте памяти. Есть кнопка с именем add new;когда пользователь нажимает add new, появляется форма, в которой пользователь вводит имя файла и может добавить файл, но команда для добавления нового файла не работает, может кто-нибудь подсказать мне, что там происходит?

Мой фрагмент кода

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.file.*;
import javax.microedition.io.Connector;
import java.io.IOException;
import java.util.*;

public class HelloMIDlet
    extends MIDlet 
    implements CommandListener {
  private List list;
  private Alert alert;
  private Display display;
  private Form form;
  private TextField fname,fpath;
  private Command select,remove,add,fadd,back,exit;

  public HelloMIDlet() {
    form=new Form("add new:");
    fname=new TextField("enter File Name","",40,TextField.ANY);
    fpath=new TextField("enter File path","file:///SDCard/",50,TextField.ANY);
    list = new List("Welcome", List.IMPLICIT); 
    remove=new Command("Remove Selected",Command.SCREEN,2);
    exit=new Command("Exit",Command.EXIT,0);
    select=new Command("Select",Command.SCREEN,1);
    add=new Command("Add New",Command.SCREEN,2);
    list.addCommand(exit);
    list.addCommand(select);
    list.addCommand(add);
    list.addCommand(remove);
    form.append(fname);
    form.append(fpath);
    list.setCommandListener(this);
  }
  public void startApp() {

    display=Display.getDisplay(this);
    display.setCurrent(list);
  }

  public void pauseApp() {}

  public void destroyApp(boolean unconditional) {}

  public void commandAction(Command c, Displayable s) {
   if(c==exit)
   {
    notifyDestroyed();
    }
    else if(c==add)
    {
    // display.setCurrent(form);
     addfile();

    }
    else if(c==remove)
    {

    }
    else if(c==back)
    {
        display.setCurrent(list);
    }
    else if(c==fadd)
    {
        alert=new Alert("Open the file:","Would you like to open the current file??",null,null);
        alert.setTimeout(Alert.FOREVER);

    }
    else if(c==list.SELECT_COMMAND)
    {

    }
  }
  public void addfile()
  {fadd=new Command("add File",Command.SCREEN,0);
   back=new Command("Back",Command.BACK,1);
   form.addCommand(fadd);
   form.addCommand(back);

   form.setCommandListener(this);
   display.setCurrent(form); 
  }
}

1 Ответ

1 голос
/ 15 февраля 2011

Когда вы выбираете «добавить файл», команда запускается и обрабатывается commandAction, в частности, следующим фрагментом кода:

else if(c==fadd)
{
  alert=new Alert("Open the file:","Would you like to open the current file??",null,null);
  alert.setTimeout(Alert.FOREVER);
  // You were creating a Alert instance, but not showing it, this line below is one you 
  // were missing
  display.setCurrent(alert, list);
}

Вы можете использовать setCurrent(Alert alert, Displayable nextDisplayable) или setCurrent(Displayable nextDisplayable)в зависимости от того, что вам нужно.

...