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;
}