2015-04-29 3 views
1

Я создаю одно приложение для Android, которое состоит из одного веб-представления. Я использую Android 1.1. Минимальный SDK является 19. Только один макет, activity_main.xml в следующем кодеfindViewById возвращает null для WebView в android studio 1.1

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 
<WebView android:text="@+id/web_view" android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    </RelativeLayout> 

Java класс MainActivity.java следующим образом:

public class MainActivity extends ActionBarActivity { 
private WebView web_view; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    web_view = (WebView) findViewById(R.id.web_view); 
    WebSettings webSetting= web_view.getSettings(); 
    webSetting.setJavaScriptEnabled(true); 
    web_view.setWebChromeClient(new WebChromeClient()); 
    web_view.loadUrl("file:///andorid_asset/www/index.html");  

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
    } 
} 

Ошибка java.lang.NullPointerException из OnCreate функции в statement WebSettings webSetting = web_view.getSettings(), Я уже проверил переменную web_view, это значит, что инструкция findViewById (R.id.web_view) ничего не вернула. Как вы видите, веб-просмотр существует в макете xml-файла, правый файл макета вызывается в кодах (на самом деле только этот макет xml). Я действительно не знаю, что происходит. Я читаю ссылку findViewById returns null for WebView. Я также несколько раз очищаю/перестраиваю проект, перезапускаю свое устройство (Samsung Galaxy TAB S, android 4.4.2) несколько раз. Это бесполезно.
Может кто-нибудь указать, что случилось? Спасибо заранее!

+0

Спасибо всем вашим предложениям. После того, как я перейду на «id», он работает. Этот сайт действительно полезен! –

ответ

2

Вы определяете атрибут id своего WebView.

У вас есть:

WebView android:text="@+id/web_view"

должно быть:

WebView android:id="@+id/web_view"

+1

wow, nice catch – Blackbelt

+0

^Я бы уставился на это часами, не видя этого. – AdamMc331

+0

Почему это не ошибка компиляции? : S –

0

Попробуйте изменить имя тега:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 
<!-- BAD PROPERY NAME HERE --> 
<WebView android:id="@+id/web_view" android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    </RelativeLayout> 

из android:text="@+id/web_view" для android:id="@+id/web_view"

+0

Как это отличается от моего ответа? Что еще он дает? – Emmanuel

+0

только что писал, когда вы отправили – Eefret

Смежные вопросы