Програма аварійно завершує роботу кожного разу на початку

Моє додаток збійся під час запуску. Я не знаю чому Я думаю, що я зробив це правильно. І Eclipse does not показує помилки

MainActivity.java(Edited)

    package org.flikkema.robin.dagrooster;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.WebView;
import android.widget.Toast;

@SuppressLint("SimpleDateFormat")
public class MainActivity extends Activity {

// Declare as global variable 
  WebView mWebview;
public boolean onCreateOptionsMenu(Menu menu){
   //Make MenuInflater
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    inflater.inflate(R.menu.main, menu);
// Return True
return true;
}   

@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Toast.makeText(this, "Laden van roosterwijzigingen.",
    Toast.LENGTH_SHORT).show();
    mWebview =(WebView) findViewById(R.id.webView1);
   //Enable JavaScript
    mWebview.getSettings().setJavaScriptEnabled(true);//enable javascript
    mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");

    } 


public boolean onOptionsItemSelected(MenuItem item) {
    mWebview =(WebView) findViewById(R.id.webView1);
    switch (item.getItemId()) {
   //If button 1 is pressed
    case R.id.about:
       //Toast Message
        Toast.makeText(this, "App made by Robin Flikkema & Sander ten Hove",
        Toast.LENGTH_LONG).show();
        break;
   //If Share is pressed
    case R.id.menu_share:
       //Toast message
        Toast.makeText(this, "Roosterwijzigingen delen",
        Toast.LENGTH_SHORT).show();
       //Making share selector
        String shareBody = "Er vervallen nieuwe lessen! Check het uit, met de Eemsdeltacollege Roosterwijzigingen App.";
        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
            sharingIntent.setType("text/plain");
            sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Eemsdeltacollege Roosterwijzigingen");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
            startActivity(Intent.createChooser(sharingIntent, getResources().getString(R.string.share_using)));
        break;
   //If Next is pressed
    case R.id.menu_next:
       //Toast message
        Toast.makeText(this, "Morgen",
        Toast.LENGTH_SHORT).show();
       //Calculate Date
        Calendar cal=Calendar.getInstance();
        int currentDay=cal.get(Calendar.DAY_OF_MONTH);
        //Set the date to 1 day
        cal.set(Calendar.DAY_OF_MONTH, currentDay+1);
        while (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || 
                cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
           cal.add(Calendar.DATE, 1);
       }
        Date DateDate = cal.getTime();
        SimpleDateFormat postFormater = new SimpleDateFormat("dd-M-yyyy"); 

        String newDateStr = postFormater.format(DateDate); 
       //Set URL
        mWebview .loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php?datum="+newDateStr);
        setContentView(mWebview );
        break;
   //If Refresh is pressed
    case R.id.menu_refresh:
       //Toast message
        Toast.makeText(this, "Roosterwijzigingen ophalen.",
        Toast.LENGTH_SHORT).show();
       //Load URL
        mWebview .loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");
        setContentView(mWebview );
        break;
   //If Overmorgen is pressed
    case R.id.menu_nextt:
       //Toast message
        Toast.makeText(this, "Overmorgen",
        Toast.LENGTH_SHORT).show();
       //Calculate Date
        Calendar cal1=Calendar.getInstance();
        int currentDay1=cal1.get(Calendar.DAY_OF_MONTH);
        //Set the date to 1 day
        cal1.set(Calendar.DAY_OF_MONTH, currentDay1+2);
        while (cal1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || 
                cal1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
           cal1.add(Calendar.DATE, 1);
       }
        Date DateDate1 = cal1.getTime();
        SimpleDateFormat postFormater1 = new SimpleDateFormat("dd-M-yyyy"); 

        String newDateStr1 = postFormater1.format(DateDate1); 
       //Set URL
        mWebview .loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php?datum="+newDateStr1);
        setContentView(mWebview );
        break;
   //If Help is pressed
    case R.id.action_settings:
       //Toast message
        Toast.makeText(this, "Laden van de Help pagina.",
        Toast.LENGTH_SHORT).show();
       //Load Help
        mWebview .loadUrl("https://dl.dropboxusercontent.com/u/53488707/RoosterwijzigingenApp/index.html");
        setContentView(mWebview );
        break;
   //If Vandaag is pressed
    case R.id.menu_back:
       //Toast message
        Toast.makeText(this, "Vandaag",
        Toast.LENGTH_SHORT).show();
       //Load Help
        mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");
        setContentView(mWebview);
        break;
    }
    return super.onOptionsItemSelected(item);
}

}

LogCat

06-24 14:41:52.079: E/AndroidRuntime(5986): FATAL EXCEPTION: main
06-24 14:41:52.079: E/AndroidRuntime(5986): java.lang.RuntimeException: Unable to         instantiate activity         ComponentInfo{org.flikkema.robin.dagrooster/org.flikkema.robin.dagrooster.MainActivity}:     java.lang.NullPointerException
06-24 14:41:52.079: E/AndroidRuntime(5986):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at android.os.Looper.loop(Looper.java:137)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at android.app.ActivityThread.main(ActivityThread.java:4745)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at java.lang.reflect.Method.invokeNative(Native Method)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at java.lang.reflect.Method.invoke(Method.java:511)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-24 14:41:52.079: E/AndroidRuntime(5986):     at dalvik.system.NativeStart.main(Native Method)
06-24 14:41:52.079: E/AndroidRuntime(5986): Caused by: java.lang.NullPointerException
06-24 14:41:52.079: E/AndroidRuntime(5986):     at android.content.ContextWrapper.getResources(ContextWrapper.java:81)

EDIT: After i added: WebView mWebview =(WebView) findViewById(R.id.webView1); *It gives me the same error*

EDIT:After i edited it all. it still crashes. ive posted the full code.

1
так, ви можете покласти всередину onCreate. або ви можете створити файл XML, який містить WebView, і використовувати findViewById
додано Автор Blackbelt, джерело
Java це не c/c ++. Ви повинні створити об'єкт, перш ніж отримати доступ до його поля. вам потрібно зателефонувати mWebView = новий WebView (це);
додано Автор Blackbelt, джерело
@blackbelt ви маєте на увазі: WebView mWebView = новий WebView (це); Де я розміщую це? всередині наСоздайте?
додано Автор user2420234, джерело

8 Відповіді

Ви не ініціалізували WebView .

WebView mWebview ; 
public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      mWebview = new WebView(this);    
      Toast.makeText(this, "Laden van roosterwijzigingen.",
                                       Toast.LENGTH_SHORT).show();
     //Enable JavaScript
      mWebview.getSettings().setJavaScriptEnabled(true);//enable javascript
      mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");
      setContentView(mWebview );
} 
1
додано
@ Flikkema.org я не розумію кожен метод ?. Ви можете оголосити WebView mWebview як член класу ініціалізувати його onCreate .
додано Автор Raghunandan, джерело
@ Flikkema.org життєвий цикл навчання та дізнатись, що таке onCreate. це допоможе вам далі.
додано Автор Raghunandan, джерело
@ Flikkema.org див. Редагування. у тому ж класі, якщо у вас є інші методи, які можна використовувати за допомогою mWebview .
додано Автор Raghunandan, джерело
@ Flikkema.org, якщо у вас більше методів у тому самому класі, ви можете ініціалізувати веб-перегляд у створенні і оголосити його як оголошення класу, використовуючи його в кожному методі класу.
додано Автор Raghunandan, джерело
Чи потрібно ініціалізувати WebView у кожному методі?
додано Автор user2420234, джерело
Ой спасибі, @raghunandan
додано Автор user2420234, джерело
@ Рагуандан А як?
додано Автор user2420234, джерело
Ive інші методи, де я використовую mWebview
додано Автор user2420234, джерело

Ви не ініціалізували WebView .

WebView mWebview ; 
public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      mWebview = new WebView(this);    
      Toast.makeText(this, "Laden van roosterwijzigingen.",
                                       Toast.LENGTH_SHORT).show();
     //Enable JavaScript
      mWebview.getSettings().setJavaScriptEnabled(true);//enable javascript
      mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");
      setContentView(mWebview );
} 
1
додано
@ Flikkema.org я не розумію кожен метод ?. Ви можете оголосити WebView mWebview як член класу ініціалізувати його onCreate .
додано Автор Raghunandan, джерело
@ Flikkema.org див. Редагування. у тому ж класі, якщо у вас є інші методи, які можна використовувати за допомогою mWebview .
додано Автор Raghunandan, джерело
@ Flikkema.org життєвий цикл навчання та дізнатись, що таке onCreate. це допоможе вам далі.
додано Автор Raghunandan, джерело
@ Flikkema.org, якщо у вас більше методів у тому самому класі, ви можете ініціалізувати веб-перегляд у створенні і оголосити його як оголошення класу, використовуючи його в кожному методі класу.
додано Автор Raghunandan, джерело
@ Рагуандан А як?
додано Автор user2420234, джерело
Ой спасибі, @raghunandan
додано Автор user2420234, джерело
Ive інші методи, де я використовую mWebview
додано Автор user2420234, джерело
Чи потрібно ініціалізувати WebView у кожному методі?
додано Автор user2420234, джерело

mWebview is possible null. You have to bound it:

mWebView = (WebView) findViewById(R.id.YourWebView);

або ініціювати це:

mWebView = new WebView(this);

Я думаю, що ваш суфікс м означає "член". Отже оголошуйте це за межами onCreate і пов'язані або ініціюйте його всередині методу onCreate.

UPDATE:

private WebView mWebview;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayoutfile);

Toast.makeText(this, "Laden van roosterwijzigingen.",
Toast.LENGTH_SHORT).show();

mWebview =(WebView) findviewById(R.id.webview_id);
// Enable JavaScript
mWebview.getSettings().setJavaScriptEnabled(true);//enable javascript
mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");

} 
0
додано
Коли я використовую це: mWebView = (WebView) findViewById (R.id.webView1); він говорить, що mWebView не може бути вирішено до змінної
додано Автор user2420234, джерело

mWebview is possible null. You have to bound it:

mWebView = (WebView) findViewById(R.id.YourWebView);

або ініціювати це:

mWebView = new WebView(this);

Я думаю, що ваш суфікс м означає "член". Отже оголошуйте це за межами onCreate і пов'язані або ініціюйте його всередині методу onCreate.

UPDATE:

private WebView mWebview;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayoutfile);

Toast.makeText(this, "Laden van roosterwijzigingen.",
Toast.LENGTH_SHORT).show();

mWebview =(WebView) findviewById(R.id.webview_id);
// Enable JavaScript
mWebview.getSettings().setJavaScriptEnabled(true);//enable javascript
mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");

} 
0
додано
Коли я використовую це: mWebView = (WebView) findViewById (R.id.webView1); він говорить, що mWebView не може бути вирішено до змінної
додано Автор user2420234, джерело
Caused by: java.lang.NullPointerException
    at android.content.ContextWrapper.getResources(ContextWrapper.java:81)

Це означає, що ви намагаєтесь отримати доступ до своїх ресурсів занадто рано, наприклад, коли ініціалізуєте свої змінні учасника. Лише викликайте getResources() в onCreate() або пізніше в життєвому циклі діяльності.

Після цього ви знайдете, що mWebView є null , як це пропонують інші. Перш ніж викликати findViewById() , вам потрібно буде setContentView() , щоб знайти компоненти у вашій ієрархії перегляду вмісту.

0
додано
Ви бачите це в прикладі з Dixit Patel.
додано Автор Stefan Beike, джерело
@ Flikkema.org Оновлене запитання не показує доступ до ресурсів до onCreate() . Це ваш повний код? Крім того, ваш logcat повинен містити більше stacktrace під цим NullPointerException у getResources (), щоб допомогти точно визначити точне місце розташування проблеми.
додано Автор laalto, джерело
Як робити iset setContentView ()
додано Автор user2420234, джерело
@ laalto це повний код, але не повний logcat. Як я можу виправити код? або вам потрібно більше логарифм?
додано Автор user2420234, джерело
Caused by: java.lang.NullPointerException
    at android.content.ContextWrapper.getResources(ContextWrapper.java:81)

Це означає, що ви намагаєтесь отримати доступ до своїх ресурсів занадто рано, наприклад, коли ініціалізуєте свої змінні учасника. Лише викликайте getResources() в onCreate() або пізніше в життєвому циклі діяльності.

Після цього ви знайдете, що mWebView є null , як це пропонують інші. Перш ніж викликати findViewById() , вам потрібно буде setContentView() , щоб знайти компоненти у вашій ієрархії перегляду вмісту.

0
додано
Ви бачите це в прикладі з Dixit Patel.
додано Автор Stefan Beike, джерело
@ Flikkema.org Оновлене запитання не показує доступ до ресурсів до onCreate() . Це ваш повний код? Крім того, ваш logcat повинен містити більше stacktrace під цим NullPointerException у getResources (), щоб допомогти точно визначити точне місце розташування проблеми.
додано Автор laalto, джерело
Як робити iset setContentView ()
додано Автор user2420234, джерело
@ laalto це повний код, але не повний logcat. Як я можу виправити код? або вам потрібно більше логарифм?
додано Автор user2420234, джерело

Просто ви не ініціалізували mWebview

використовувати цей спосіб;

WebView mWebview =(WebView) findviewById(R.id.webview_id);

EDIT

Я думаю, що ти повинен зробити так, як це робиться

// Declare as global variable 
  WebView mWebview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayoutfile);

        Toast.makeText(this, "Laden van roosterwijzigingen.",
        Toast.LENGTH_SHORT).show();

        mWebview =(WebView) findviewById(R.id.webview_id);
       //Enable JavaScript
        mWebview.getSettings().setJavaScriptEnabled(true);//enable javascript
        mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");

      } 
0
додано
ні. оголошуйте mWebView атрибутом учасника, і ви можете використовувати його в кожному методі цієї діяльності.
додано Автор Stefan Beike, джерело
див. мою оновлену відповідь.
додано Автор Stefan Beike, джерело
див. мою редаговану відповідь
додано Автор Dixit Patel, джерело
так, ви можете використовувати WebView mWebview = (WebView) findviewById (R.id.webview_id); у кожному методі після оголошення як глобального
додано Автор Dixit Patel, джерело
Ви створили файл макета і в цьому місці переглядаєте веб-переглядач
додано Автор Dixit Patel, джерело
@dixitoatel я не бачив вашої відповіді, але thnx
додано Автор user2420234, джерело
@StefanBeike як це зробити
додано Автор user2420234, джерело
Це робило роботу :) але мені потрібно скористатись: WebView mWebview = (WebView) findviewById (R.id.webview_id); у кожному методі
додано Автор user2420234, джерело
він говорить, що mWebview не може бути вирішено, коли я використовую WebView mWebView = (WebView) findViewById (R.id.webView1);
додано Автор user2420234, джерело

Просто ви не ініціалізували mWebview

використовувати цей спосіб;

WebView mWebview =(WebView) findviewById(R.id.webview_id);

EDIT

Я думаю, що ти повинен зробити так, як це робиться

// Declare as global variable 
  WebView mWebview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayoutfile);

        Toast.makeText(this, "Laden van roosterwijzigingen.",
        Toast.LENGTH_SHORT).show();

        mWebview =(WebView) findviewById(R.id.webview_id);
       //Enable JavaScript
        mWebview.getSettings().setJavaScriptEnabled(true);//enable javascript
        mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");

      } 
0
додано
ні. оголошуйте mWebView атрибутом учасника, і ви можете використовувати його в кожному методі цієї діяльності.
додано Автор Stefan Beike, джерело
див. мою оновлену відповідь.
додано Автор Stefan Beike, джерело
див. мою редаговану відповідь
додано Автор Dixit Patel, джерело
так, ви можете використовувати WebView mWebview = (WebView) findviewById (R.id.webview_id); у кожному методі після оголошення як глобального
додано Автор Dixit Patel, джерело
Ви створили файл макета і в цьому місці переглядаєте веб-переглядач
додано Автор Dixit Patel, джерело
@dixitoatel я не бачив вашої відповіді, але thnx
додано Автор user2420234, джерело
@StefanBeike як це зробити
додано Автор user2420234, джерело
Це робило роботу :) але мені потрібно скористатись: WebView mWebview = (WebView) findviewById (R.id.webview_id); у кожному методі
додано Автор user2420234, джерело
він говорить, що mWebview не може бути вирішено, коли я використовую WebView mWebView = (WebView) findViewById (R.id.webView1);
додано Автор user2420234, джерело
android_jobs_ua
android_jobs_ua
120 учасників

Публикуем вакансии и запросы на поиск работы по направлению Android. Здесь всё: full-time, part-time, remote и разовые подработки.

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.