Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SherlockFragment内部未定义的onKeyDown_Java_Android_Android Fragments_Actionbarsherlock_Android Fragmentactivity - Fatal编程技术网

Java SherlockFragment内部未定义的onKeyDown

Java SherlockFragment内部未定义的onKeyDown,java,android,android-fragments,actionbarsherlock,android-fragmentactivity,Java,Android,Android Fragments,Actionbarsherlock,Android Fragmentactivity,当使用下面的代码时,我收到以下错误 类型SherlockFragment的onKeyDown(int,KeyEvent)方法未定义 public boolean onKeyDown(int KeyCode, KeyEvent event) { if ((KeyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) { web.goBack(); return true;

当使用下面的代码时,我收到以下错误

类型SherlockFragment的onKeyDown(int,KeyEvent)方法未定义

 public boolean onKeyDown(int KeyCode, KeyEvent event) {
        if ((KeyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
            web.goBack();
            return true;
        }
        return super.onKeyDown(KeyCode, event);
    }

活动应该管理后退按钮,而不是片段。如果希望片段管理onKeyDown,可以在
getView()返回的视图上附加
onkeydlistener


活动应该管理后退按钮,而不是片段。如果希望片段管理onKeyDown,可以在
getView()返回的视图上附加
onkeydlistener


在做了一些研究之后。我找到了这个! 希望它能有所帮助

root =(ViewGroup) inflater.inflate(R.layout.setting_f_other, container, false);

    root.setOnKeyListener( new OnKeyListener() {
                      @Override
                      public boolean onKey(View v, int keyCode, KeyEvent event ) {
                          if (keyCode == KeyEvent.KEYCODE_BACK){
                            //Do something
                          }
                        return false;

                      } 
                 });

在做了一些研究之后。我找到了这个! 希望它能有所帮助

root =(ViewGroup) inflater.inflate(R.layout.setting_f_other, container, false);

    root.setOnKeyListener( new OnKeyListener() {
                      @Override
                      public boolean onKey(View v, int keyCode, KeyEvent event ) {
                          if (keyCode == KeyEvent.KEYCODE_BACK){
                            //Do something
                          }
                        return false;

                      } 
                 });

我不会让这种事发生在你的碎片上。下面的代码在我的MainActivity中为我工作,有4个选项卡,每个选项卡都有自己的web视图

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    int currPage = mPager.getCurrentItem();
    WebView wv = null;
    switch (currPage) {
    case 0:
        wv = (WebView) mPager.getChildAt(currPage).findViewById(R.id.webView1);
        break;
    case 1:
        wv = (WebView) mPager.getChildAt(currPage).findViewById(R.id.webView2);
        break;
    case 2:
        wv = (WebView) mPager.getChildAt(currPage).findViewById(R.id.webView3);
        break;
    case 3:
        wv = (WebView) mPager.getChildAt(currPage).findViewById(R.id.webView4);
        break;
    }

    if (wv != null) {
        if (wv.canGoBack()) {
            wv.goBack();
        } else {
            super.onBackPressed();
        }
    } else {
        super.onBackPressed();
    }
}
编辑:我在第四个选项卡上遇到了麻烦,解决方案是在片段(Tab0.java)中设置webView静态。然后在我的主要活动中直接引用它

switch (currPage) {
    case 0:
        wv = Tab0.webView;
        break;
    case 1:
        wv = Tab1.webView;
        break;
    case 2:
        wv = Tab2.webView;
        break;
    case 3:
        wv = Tab3.webView;
        break;
    }

我不会让这种事发生在你的碎片上。下面的代码在我的MainActivity中为我工作,有4个选项卡,每个选项卡都有自己的web视图

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    int currPage = mPager.getCurrentItem();
    WebView wv = null;
    switch (currPage) {
    case 0:
        wv = (WebView) mPager.getChildAt(currPage).findViewById(R.id.webView1);
        break;
    case 1:
        wv = (WebView) mPager.getChildAt(currPage).findViewById(R.id.webView2);
        break;
    case 2:
        wv = (WebView) mPager.getChildAt(currPage).findViewById(R.id.webView3);
        break;
    case 3:
        wv = (WebView) mPager.getChildAt(currPage).findViewById(R.id.webView4);
        break;
    }

    if (wv != null) {
        if (wv.canGoBack()) {
            wv.goBack();
        } else {
            super.onBackPressed();
        }
    } else {
        super.onBackPressed();
    }
}
编辑:我在第四个选项卡上遇到了麻烦,解决方案是在片段(Tab0.java)中设置webView静态。然后在我的主要活动中直接引用它

switch (currPage) {
    case 0:
        wv = Tab0.webView;
        break;
    case 1:
        wv = Tab1.webView;
        break;
    case 2:
        wv = Tab2.webView;
        break;
    case 3:
        wv = Tab3.webView;
        break;
    }