webview代码中的搜索文本出错

时间:2014-09-01 21:47:47

标签: android webview

我已经在我的三星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”。 我添加了“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");

我现在该如何解决?

1 个答案:

答案 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 {    ...    }

下次包含一些源代码。