2012-10-10 88 views
1

Eclipse不斷告訴我有關調用問題。這是我得到的消息,可以在下面看到。請幫我解決這個問題。我應該放棄哪些代碼來擺脫調用問題。謝謝。黑莓導航點擊調用問題

Warning!: method 'parsepack.xmlparsing.navigationClick(int,int)' not invoked. 
Warning!: method 'parsepack.xmlparsing.insert(String,int)' not invoked. 

這裏是方法navigationClick()

protected boolean navigationClick(int status, int time) 
{ 
    try 
    { 
     //navigate here to another screen 
     ui.pushScreen(new ResultScreen()); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Exception:- : navigationClick() "+e.toString()); 
    } 
    return true; 
} 

這裏所述方法insert()

public void insert(String toInsert, int index) 
{ 
    listElements.addElement(toInsert); 
} 

這裏是類xmlparsing.java

package parsepack; 

import java.io.IOException; 
import java.io.InputStream; 
import java.util.Vector; 

import javax.microedition.io.Connector; 
import javax.microedition.io.StreamConnection; 

import net.rim.device.api.system.Bitmap; 
import net.rim.device.api.system.Display; 
import net.rim.device.api.ui.DrawStyle; 
import net.rim.device.api.ui.Field; 
import net.rim.device.api.ui.FieldChangeListener; 
import net.rim.device.api.ui.Graphics; 
import net.rim.device.api.ui.Manager; 
import net.rim.device.api.ui.UiApplication; 
import net.rim.device.api.ui.component.ListField; 
import net.rim.device.api.ui.component.ListFieldCallback; 
import net.rim.device.api.ui.container.MainScreen; 
import net.rim.device.api.ui.container.VerticalFieldManager; 
import net.rim.device.api.xml.parsers.DocumentBuilder; 
import net.rim.device.api.xml.parsers.DocumentBuilderFactory; 

import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 

public class xmlparsing extends UiApplication implements ListFieldCallback, FieldChangeListener 
{ 

    public static void main(String[] args) 
    { 
     xmlparsing app = new xmlparsing(); 
     app.enterEventDispatcher(); 
    } 


    public long mycolor ; 
    Connection _connectionthread; 
    private static ListField _list; 
    private static Vector listElements = new Vector(); 
    public MainScreen screen = new MainScreen(); 
    VerticalFieldManager mainManager; 
    VerticalFieldManager subManager; 
    UiApplication ui = UiApplication.getUiApplication(); 


    public xmlparsing() 
    { 
     super(); 
     pushScreen(screen); 

     final Bitmap backgroundBitmap = Bitmap.getBitmapResource("blackbackground.png"); 

     mainManager = new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL | Manager.NO_VERTICAL_SCROLLBAR) 
     { 

      public void paint(Graphics graphics) 
      { 
       graphics.drawBitmap(0, 0, Display.getWidth(),Display.getHeight(),backgroundBitmap, 0, 0); 

       super.paint(graphics); 
      } 

     }; 

     subManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR) 
     { 
      protected void sublayout(int maxWidth, int maxHeight) 
      { 
       int displayWidth = Display.getWidth(); 
       int displayHeight = Display.getHeight(); 

       super.sublayout(displayWidth, displayHeight); 
       setExtent(displayWidth, displayHeight); 
      } 
     }; 


     screen.add(mainManager); 

     _list = new ListField() 

     { 

      public void paint(Graphics graphics) 

      { 
       graphics.setColor((int) mycolor); 
       super.paint(graphics); 

      } 

     }; 
     mycolor = 0x00FFFFFF; 
     _list.invalidate(); 
     _list.setEmptyString("* Feeds Not Available *", DrawStyle.HCENTER); 
     _list.setRowHeight(50); 
     _list.setCallback(this); 
     mainManager.add(subManager); 
     listElements.removeAllElements(); 
     _connectionthread = new Connection(); 
     _connectionthread.start(); 
    } 


    protected boolean navigationClick(int status, int time) 
    { 
     try 
     { 
      //navigate here to another screen 
      ui.pushScreen(new ResultScreen());     
     } 
     catch(Exception e) 
     { 
      System.out.println("Exception:- : navigationClick() "+e.toString());     
     } 

     return true; 
    } 



    private class Connection extends Thread 
    { 
     public Connection() 
     { 
      super(); 
     } 

     public void run() { 
      Document doc; 
      StreamConnection conn = null; 
      InputStream is = null; 
      try { 

       conn = (StreamConnection) Connector.open("http://imforchange.org/international-movement-for-change/testing/data.xml"+";deviceside=true"); 

       DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
       docBuilderFactory.setIgnoringElementContentWhitespace(true); 
       docBuilderFactory.setCoalescing(true); 
       DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
       docBuilder.isValidating(); 
       is = conn.openInputStream(); 
       doc = docBuilder.parse(is); 
       doc.getDocumentElement().normalize(); 
       NodeList list = doc.getElementsByTagName("eventName"); 
       for (int i = 0; i < list.getLength(); i++) 
       { 
        Node textNode = list.item(i).getFirstChild(); 
        listElements.addElement(textNode.getNodeValue()); 
       } 

      } catch (Exception e) { 
       System.out.println(e.toString()); 
      } finally { 
       if (is != null) { 
        try { 
         is.close(); 
        } catch (IOException ignored) { 
        } 
       } 
       if (conn != null) { 
        try { 
         conn.close(); 
        } 
        catch (IOException ignored) { 
        } 
       }  
      } 
      UiApplication.getUiApplication().invokeLater(new Runnable() { 
       public void run() { 
        _list.setSize(listElements.size()); 
        subManager.add(_list); 
        screen.invalidate(); 
       } 
      }); 
     } 

    } 


    public void drawListRow(ListField list, Graphics g, int index, int y, int w) 
    { 
     String tes = (String)listElements.elementAt(index); 
     int yPos = 0+y; 
     g.drawLine(0, yPos, w, yPos); 
     g.drawText(tes, 5, 15+y, 0, w); 
    } 


    public Object get(ListField list, int index) 
    { 
     return listElements.elementAt(index); 
    } 
    public int indexOfList(ListField list, String prefix, int string) 
    { 
     return listElements.indexOf(prefix, string); 
    } 
    public int getPreferredWidth(ListField list) 
    { 
     return Display.getWidth(); 
    } 
    public void insert(String toInsert, int index) { 
     listElements.addElement(toInsert); 
    } 

    public void fieldChanged(Field field, int context) { 


    } 
} 

ResultScreen.java

package parsepack; 

import net.rim.device.api.ui.component.LabelField; 
import net.rim.device.api.ui.container.MainScreen; 

public class ResultScreen extends MainScreen { 

    public ResultScreen() { 
     LabelField resultLabel = new LabelField("Result: "); 
     add(resultLabel); 
    } 

} 
+0

是否有任何按鈕或一些您正在調用'navigationOnClick()'方法的UI。 – BBdev

+0

您在哪裏使用此導航點擊方法? –

+0

你可以在這裏發佈你的xmlparsing類嗎?我真的不想下載一個RAR文件來看看這個。謝謝。 – Nate

回答

1

首先,那些你看到的消息是警告,不錯誤。警告並不總是一個問題,但有時他們是。在這種情況下,我認爲至少第一條消息是一個問題,所以您需要修復它。

1)首先,將navigationClick()方法。編譯器告訴你,你有一個方法navigationClick()的實現,它不會從任何代碼或BlackBerry OS基礎結構調用。這可能不是你想要的。通常情況下,navigationClick()是,你在一個類中重寫的方法你寫的黑莓Fieldextends之一。例如,一個ButtonField子類。在這種情況下,當按鈕被點擊時,將調用navigationClick()

但是,您放置在主UIApplication子你navigationClick()方法。這不是你想要的。您需要該方法以overridenavigationClick()方法在字段類中。當用戶點擊時,我不確定您想要哪個字段調用此方法。但是,例如,你可能會做這樣的事情:

_list = new ListField() 
{ 
    public void paint(Graphics graphics) 
    { 
     graphics.setColor((int) mycolor); 
     super.paint(graphics); 
    } 
    protected boolean navigationClick(int status, int time) 
    { 
     try 
     { 
      //navigate here to another screen 
      ui.pushScreen(new ResultScreen()); 
     } 
     catch(Exception e) 
     { 
      System.out.println("Exception:- : navigationClick() "+e.toString()); 
     } 
     return true; 
    } 
}; 

這將使navigationClick()得到的是點擊您的列表時調用,它將擺脫警告。

2)關於關於insert()警告,因爲你不使用它的任何地方只是。看起來您已經添加了該方法,以允許xmlparsing類以外的代碼能夠將項插入列表中。也許這就是你想要的,但你還沒有寫出其他代碼來使用該方法。我看到你至少有幾個選擇:

  1. 刪除或註釋insert()方法,直到你需要它。這將擺脫警告。
  2. 添加一些代碼,確實使用此方法。
  3. 忽略警告,只是確保你明白的警告是告訴你,你有一些代碼,(還)沒有必要的,因爲它是未使用
  4. 你可以在Java程序中,by doing thisthis, in the Eclipse preferences禁止警告,如果您知道警告不是問題,並且您不希望過度警告來隱藏實際問題。我通常不推薦這個。通常情況下,最好修復警告,而不是隱藏它。
+0

哇。多麼美好的答案。你是幸運的。謝謝alottt nate。我會嘗試並給你反饋。 – ejobity

+0

它就像一個魅力:-) – ejobity

+0

@ejobity,高興地幫助。感謝您發佈您的代碼,並很好地描述您的問題。 – Nate