我已经在我的三星S3上使用android 4.1.2在页面how to search text in webview中测试了@Zhuinden的最后一个代码,并且尽管使用了不推荐使用的findAll()但我仍然有效关闭错误在Android 2.2模拟器上。这是LogCat错误:
08-29 00:34:23.454: E/AndroidRuntime(450): FATAL EXCEPTION: main
08-29 00:34:23.454: E/AndroidRuntime(450): java.lang.NoSuchMethodError: com.tafasir.tafseerenoor.SearchDemoActivity.getActionBar
08-29 00:34:23.454: E/AndroidRuntime(450): at com.tafasir.tafseerenoor.SearchDemoActivity.onCreate(SearchDemoActivity.java:34)
08-29 00:34:23.454: E/AndroidRuntime(450): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-29 00:34:23.454: E/AndroidRuntime(450): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-29 00:34:23.454: E/AndroidRuntime(450): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-29 00:34:23.454: E/AndroidRuntime(450): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-29 00:34:23.454: E/AndroidRuntime(450): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-29 00:34:23.454: E/AndroidRuntime(450): at android.os.Handler.dispatchMessage(Handler.java:99)
08-29 00:34:23.454: E/AndroidRuntime(450): at android.os.Looper.loop(Looper.java:123)
08-29 00:34:23.454: E/AndroidRuntime(450): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-29 00:34:23.454: E/AndroidRuntime(450): at java.lang.reflect.Method.invokeNative(Native Method)
08-29 00:34:23.454: E/AndroidRuntime(450): at java.lang.reflect.Method.invoke(Method.java:521)
08-29 00:34:23.454: E/AndroidRuntime(450): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-29 00:34:23.454: E/AndroidRuntime(450): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-29 00:34:23.454: E/AndroidRuntime(450): at dalvik.system.NativeStart.main(Native Method)
如何在没有错误的情况下在旧的Android系统上运行它来解决问题?
感谢您的帮助“gedr”。 我添加了“gedr”建议代码,还导入了android.support.v7.app.ActionBar。我的类扩展了ActionBarActivity,我得到了mActionBar = getActionBar()的错误;
Type mismatch: cannot convert from android.app.ActionBar to android.support.v7.app.ActionBar
它也不允许我将ActionBarActivity的扩展更改为SupportActionBarActivity,因为我使用不同的代码会遇到很多错误。 这是我使用它的代码的一些部分:
public class SearchDemoActivity extends ActionBarActivity implements View.OnClickListener
{
WebView mWebView;
private RelativeLayout container;
private Button nextButton, closeButton;
private EditText findBox;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
// Begin Help code to remove android 2.2 error
ActionBar mActionBar = null;
if (android.os.Build.VERSION.SDK_INT >= 8) {
mActionBar = getActionBar(); //Error Line: Type mismatch: cannot convert from android.app.ActionBar to android.support.v7.app.ActionBar
} else {
mActionBar = getSupportActionBar();
}
// END Help code to remove android 2.2 error
mActionBar.setTitle(R.string.information_display);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebViewClient(new WebViewClient());
mWebView.loadUrl("file:///android_res/raw/index.htm");
我现在该如何解决?
答案 0 :(得分:0)
使用getSupportActionBar()
代替getActionBar()
。在您的代码中,您可以执行以下操作:
ActionBar mActionBar = null;
if (android.os.Build.VERSION.SDK_INT >= 8) {
mActionBar = getActionBar();
} else {
mActionBar = getSupportActionBar();
}
注意:使用此功能时,请务必延长您的活动ActionBarActivity
,如下所示:
import android.support.v7.app.ActionBar;
...
public class myActivity extends SupportActionBarActivity { ... }
下次包含一些源代码。