【问题标题】:How to go back in browser's history with physical back button?如何使用物理后退按钮返回浏览器的历史记录?
【发布时间】:2012-03-28 11:10:09
【问题描述】:

我正在制作一个应用程序,我在其中打开一个BrowserField,用户可以进一步导航到网页中存在的链接。问题是当我按下物理后退按钮时,会显示上一个屏幕,而我想在 BrowserField 本身中显示上一页。怎么做?这可能吗?

谢谢。

【问题讨论】:

    标签: java blackberry browser navigation


    【解决方案1】:

    您需要使用BrowserFieldHistory 使用canGoBack()goBack() 方法返回上一页。只需覆盖keyChar 方法来控制ESCAPE 键输入并像这样放置您自己的逻辑:

    public boolean keyChar(char key, int status, int time) {
      if ( key == Characters.ESCAPE) {
        if(yourBrowserField.getHistory().canGoBack()){
          yourBrowserField.getHistory().goBack();
        }else{
          UiApplication.getUiApplication().popScreen(this);
          return true;
        }
       }
    }
    

    【讨论】:

    • 我不知道有 BrowserFieldHistory!我会检查一下并回复你...
    • 奇怪...尝试在所有情况下都返回 true。
    • 试试yourBrowserField.getHistory().go(-1);
    • 我的错...我回来了false
    【解决方案2】:

    是的,可能

    试试这个代码:

    public class NewsBrowserScreen extends MainScreen 
    {
    int current_index,popup;
    String url;
    VerticalFieldManager vertical;
    BrowserField browserField;
    BrowserFieldConfig browserFieldConfig;
    BrowserFieldHistory browserFieldHistory;
    
    public NewsBrowserScreen(int current_index,int popup,String url) 
    {
        this.current_index=current_index;
        this.popup=popup;
        this.url=url;
        createGUI();
    }
    private void createGUI()    
    {       
        vertical=new VerticalFieldManager(VERTICAL_SCROLL|VERTICAL_SCROLLBAR|HORIZONTAL_SCROLL|HORIZONTAL_SCROLLBAR);
        browserFieldConfig=new BrowserFieldConfig();
        browserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE, BrowserFieldConfig.NAVIGATION_MODE_POINTER);     
        browserField=new BrowserField(browserFieldConfig);
        browserFieldHistory=browserField.getHistory();
        vertical.add(browserField);
        add(vertical);
        browserField.requestContent(url);
    }
    public boolean onClose() 
    {
        if(browserFieldHistory.canGoBack())
        {
            browserFieldHistory.goBack();           
            return true;
        }
        else
        {
            browserFieldHistory.clearHistory();
            return super.onClose();
        }   
    }
    }
    

    够了;

    【讨论】:

    • 这与@tipycalFlow 的答案相同... :( ...除了 clearHistory()。
    • 我在很多应用程序中都使用过这个类;这是否有效?或帮助与否?你考过这门课吗?看看两者的区别;
    • 另一个答案一直都是正确的......我犯了一个愚蠢的错误......所以我已经接受了......虽然你的答案也是正确的所以我给了你一个+1 :)
    猜你喜欢
    • 2015-05-18
    • 2012-08-19
    • 2018-10-02
    • 1970-01-01
    • 2012-05-22
    • 2021-10-27
    • 1970-01-01
    • 2018-05-04
    • 2013-06-23
    相关资源
    最近更新 更多