Намерение, содержащее WebView

#java #android #eclipse #android-intent #webview

#java #Android #eclipse #android-намерение #webview

Вопрос:

Как я могу вызвать намерение, которое содержит webview Я использовал следующий код, он отлично работает с первыми двумя намерениями

 package com.ambitionme;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

public class ambition extends Activity implements OnClickListener,
        OnItemSelectedListener {
    EditText url;
    WebView ourBrow;
    private Spinner spinner;
    private static final String[] paths = { "item 1", "item 2", "item 3" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ambition);

        ourBrow = (WebView) findViewById(R.id.wvBrowser);
        ourBrow.getSettings().setJavaScriptEnabled(true);
        ourBrow.getSettings().setLoadWithOverviewMode(true);
        ourBrow.getSettings().setUseWideViewPort(true);
        ourBrow.setWebViewClient(new ourViewClient());
        try {
            ourBrow.loadUrl("http://www.ambitionme.com");
        } catch (Exception e) {
            e.printStackTrace();
        }

        spinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(ambition.this,
                android.R.layout.simple_spinner_item, paths);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);

    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View v, int position,
            long id) {

        // TODO Auto-generated method stub
        switch (position) {
        case 0:
            // What ever you want to happen when item 1 selected
            break;
        case 1:
            // What ever you want to happen when item 2 selected
            break;
        case 2:
            // What ever you want to happen when item 3 selected
            break;

        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }

    public boolean onCreateOptionsMenu(android.view.Menu menu) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu);

        MenuInflater blowUp = getMenuInflater();
        blowUp.inflate(R.menu.coolmenu, menu);

        return true;

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {

        case R.id.aboutus:
            Intent i = new Intent("com.ambitionme.ABOUT");
            startActivity(i);

            break;

        case R.id.preferences:
            Intent p = new Intent("com.ambitionme.PREFS");
            startActivity(p);
            break;

        case R.id.exit:
            finish();
            break;

        case R.id.login:

            Intent k = new Intent("com.ambitionme.LOGIN");
            startActivity(k);


            break;

        case R.id.contactus:
            break;
        }

        return true;
    }

}
  

Класс Intent выглядит следующим образом

 package com.ambitionme;

import android.app.Activity;
import android.os.Bundle;

import android.webkit.WebView;

public class Login extends Activity {

    WebView ourBrow1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        ourBrow1 = (WebView) findViewById(R.id.wvLogin);
        ourBrow1.getSettings().setJavaScriptEnabled(true);
        ourBrow1.getSettings().setLoadWithOverviewMode(true);
        ourBrow1.getSettings().setUseWideViewPort(true);
        ourBrow1.setWebViewClient(new ourViewClient());
        try {
            ourBrow1.loadUrl("http://www.ambitionme.com/login");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  

Показаны следующие ошибки

 AndroidRuntime(31416): FATAL EXCEPTION: main

AndroidRuntime(31416): Process: com.ambitionme, PID: 31416

AndroidRuntime(31416): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ambitionme/com.ambitionme.Login}:

android.view.InflateException: Binary XML file line #7: Error inflating class Webview

AndroidRuntime(31416): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)

AndroidRuntime(31416): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)

AndroidRuntime(31416): at android.app.ActivityThread.access$800(ActivityThread.java:135)

AndroidRuntime(31416): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)

AndroidRuntime(31416): at android.os.Handler.dispatchMessage(Handler.java:102)

AndroidRuntime(31416): at android.os.Looper.loop(Looper.java:136)

AndroidRuntime(31416): at android.app.ActivityThread.main(ActivityThread.java:5017)

AndroidRuntime(31416): at java.lang.reflect.Method.invokeNative(Native Method)

AndroidRuntime(31416): at java.lang.reflect.Method.invoke(Method.java:515) AndroidRuntime(31416): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) AndroidRuntime(31416): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)

AndroidRuntime(31416): at dalvik.system.NativeStart.main(Native Method)

AndroidRuntime(31416): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class Webview

AndroidRuntime(31416): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)

AndroidRuntime(31416): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)

AndroidRuntime(31416): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)

AndroidRuntime(31416): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)

AndroidRuntime(31416): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)

AndroidRuntime(31416): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)

AndroidRuntime(31416): at android.app.Activity.setContentView(Activity.java:1929)

AndroidRuntime(31416): at com.ambitionme.Login.onCreate(Login.java:16)

AndroidRuntime(31416): at android.app.Activity.performCreate(Activity.java:5231)

AndroidRuntime(31416): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)

AndroidRuntime(31416): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)

AndroidRuntime(31416): ... 11 more

AndroidRuntime(31416): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.Webview" on path: DexPathList[[zip file "/data/app/com.ambitionme-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.ambitionme-1, /vendor/lib, /system/lib]]

AndroidRuntime(31416): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)

AndroidRuntime(31416): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)

AndroidRuntime(31416): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)

AndroidRuntime(31416): at android.view.LayoutInflater.createView(LayoutInflater.java:559) AndroidRuntime(31416): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:652)

AndroidRuntime(31416): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)

AndroidRuntime(31416): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)

AndroidRuntime(31416): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)

AndroidRuntime(31416): ... 21 more
  

Комментарии:

1. Можете ли вы опубликовать содержимое login.xml файл?

2. <?xml version=»1.0″ encoding=»utf-8″?> <LinearLayout xmlns:android=» schemas.android.com/apk/res/android » android:layout_width=»match_parent» android:layout_height=»match_parent» android:orientation=»vertical»> <Webview android:id=»@ id/wvLogin» android:layout_width=»match_parent» android:layout_height=»match_parent» /> </LinearLayout>

3. У вас нет класса Intent. У вас есть два класса Activity. Один класс Avtivity содержит WebView в своем макете. Намерения не могут содержать WebView. Пожалуйста, правильно опишите вашу проблему.

Ответ №1:

В вашем login.xml , попробуйте написать WebView вместо Webview , он чувствителен к регистру.

Ответ №2:

Внутри login.xml , попробуйте использовать «WebView», а не «Webview» (примечание заглавными буквами).