Қолданба басталған сайын бағдарлама апатқа ұшырайды

Қолданбам іске қосылған кезде апатқа ұшырайды. Мен неге екенін білмеймін. Менің ойымша, бұл дұрыс. Және тұтылуды қате көрсетпейді,

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
иә, сіз оның ішіне салуға болады. немесе сіз WebView-ді қамтитын xml файлын жасай аласыз және findViewById пайдалануыңыз мүмкін
қосылды автор Blackbelt, көзі
Java бұл c/c ++ емес. Өрісіне кіру алдында нысанды жасауыңыз қажет. Сізге mWebView = жаңа WebView (осы) деп атауыңыз керек;
қосылды автор Blackbelt, көзі
@blackbelt дегеніміз не: WebView mWebView = жаңа WebView (бұл); Бұл қайда орналасқым келеді? insideCreate ішінде?
қосылды автор 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 өмірлік циклін зерттеп, Crerere дегеніміз не екенін біліңіз. бұл сізге әрі қарай көмектеседі.
қосылды автор Raghunandan, көзі
@ Flikkema.org редакцияны қараңыз. Егер сізде көп әдістер болса, сол сыныпта mWebview қолдануға болады.
қосылды автор Raghunandan, көзі
@ Flikkema.org егер сізде бір сыныпта көп әдістер болса, сіз веб-шолғыны oncreate-да инициализациялай аласыз және оны класс мүшелерінің біреуі ретінде сыныптың барлық әдістерінде қолдануға болады.
қосылды автор Raghunandan, көзі
WebView-ті әрбір әдіске инициализациялау керек пе?
қосылды автор user2420234, көзі
Құрметті, @raghunandan
қосылды автор user2420234, көзі
@Raghuandan Қалай және қалай?
қосылды автор user2420234, көзі
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 өмірлік циклін зерттеп, Crerere дегеніміз не екенін біліңіз. бұл сізге әрі қарай көмектеседі.
қосылды автор Raghunandan, көзі
@ Flikkema.org егер сізде бір сыныпта көп әдістер болса, сіз веб-шолғыны oncreate-да инициализациялай аласыз және оны класс мүшелерінің біреуі ретінде сыныптың барлық әдістерінде қолдануға болады.
қосылды автор Raghunandan, көзі
@Raghuandan Қалай және қалай?
қосылды автор user2420234, көзі
Құрметті, @raghunandan
қосылды автор user2420234, көзі
mWebview функциясын қолданатын қосымша әдістер
қосылды автор user2420234, көзі
WebView-ті әрбір әдіске инициализациялау керек пе?
қосылды автор user2420234, көзі

mWebview is possible null. You have to bound it:

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

немесе оны бастау:

mWebView = new WebView(this);

Менің ойымша, сіздің жұрнақ m «мүше» болып табылады. Мәселен, оны Шығармашылықтан тыс жасаңыз және оны 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);

Менің ойымша, сіздің жұрнақ m «мүше» болып табылады. Мәселен, оны Шығармашылықтан тыс жасаңыз және оны 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)

Бұл сіздің ресурстарыңызға тым ерте кіруге тырысады, мысалы, мүше айнымалыларын баптағанда. onCreate() ішіндегі getResources() немесе одан кейінгі әрекеттердің өмірлік циклінде ғана қоңырау шалыңыз.

Бекіткеннен кейін, mWebView - басқалар ұсынғандай null дегенді табасыз. Мазмұнды қарау иерархиясында құрамдастарды табу үшін findViewById() қоңырау шалудан бұрын алдымен setContentView() керек.

0
қосылды
бұл Dixit Patel мысалында.
қосылды автор Stefan Beike, көзі
@ Flikkema.org Жаңартылған сұрақ onCreate() алдында ресурс қатынасын көрсетпейді. Бұл толық кодты ме? Сондай-ақ, логатыңызда нақты проблема орнын анықтауға көмектесу үшін getResources() ішіндегі NullPointerException астында бірнеше стекстрациялар болуы керек.
қосылды автор laalto, көзі
Қалай iset setContentView ()
қосылды автор user2420234, көзі
Толық код, бірақ толық логарт емес. кодты қалай түзете аламын? не қосымша логат керек?
қосылды автор user2420234, көзі
Caused by: java.lang.NullPointerException
    at android.content.ContextWrapper.getResources(ContextWrapper.java:81)

Бұл сіздің ресурстарыңызға тым ерте кіруге тырысады, мысалы, мүше айнымалыларын баптағанда. onCreate() ішіндегі getResources() немесе одан кейінгі әрекеттердің өмірлік циклінде ғана қоңырау шалыңыз.

Бекіткеннен кейін, mWebView - басқалар ұсынғандай null дегенді табасыз. Мазмұнды қарау иерархиясында құрамдастарды табу үшін findViewById() қоңырау шалудан бұрын алдымен setContentView() керек.

0
қосылды
бұл Dixit Patel мысалында.
қосылды автор Stefan Beike, көзі
@ Flikkema.org Жаңартылған сұрақ onCreate() алдында ресурс қатынасын көрсетпейді. Бұл толық кодты ме? Сондай-ақ, логатыңызда нақты проблема орнын анықтауға көмектесу үшін getResources() ішіндегі NullPointerException астында бірнеше стекстрациялар болуы керек.
қосылды автор laalto, көзі
Қалай iset setContentView ()
қосылды автор user2420234, көзі
Толық код, бірақ толық логарт емес. кодты қалай түзете аламын? не қосымша логат керек?
қосылды автор user2420234, көзі

Қарапайым mWebview-ты инициализацияламадыңыз

осылай қолданыңыз;

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

ӨҢДЕУ

Менің ойымша, осылай істеу керек

// 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, көзі
Layout файлын & осы қойылған Webview-те жасадыңыз ба?
қосылды автор Dixit Patel, көзі
@dixitoatel Мен жауапыңызды көрмедім, бірақ thnx
қосылды автор user2420234, көзі
@StefanBeike мұны қалай істейді?
қосылды автор user2420234, көзі
Бұл жұмыс жасады :), бірақ пайдалану керек: WebView mWebview = (WebView) findviewById (R.id.webview_id); әрбір әдіс бойынша
қосылды автор user2420234, көзі
WebView mWebView = (WebView) findViewById (R.id.webView1) пайдаланған кезде mWebview шешілмейді дейді;
қосылды автор user2420234, көзі

Қарапайым mWebview-ты инициализацияламадыңыз

осылай қолданыңыз;

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

ӨҢДЕУ

Менің ойымша, осылай істеу керек

// 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, көзі
Layout файлын & осы қойылған Webview-те жасадыңыз ба?
қосылды автор Dixit Patel, көзі
@dixitoatel Мен жауапыңызды көрмедім, бірақ thnx
қосылды автор user2420234, көзі
@StefanBeike мұны қалай істейді?
қосылды автор user2420234, көзі
Бұл жұмыс жасады :), бірақ пайдалану керек: WebView mWebview = (WebView) findviewById (R.id.webview_id); әрбір әдіс бойынша
қосылды автор user2420234, көзі
WebView mWebView = (WebView) findViewById (R.id.webView1) пайдаланған кезде mWebview шешілмейді дейді;
қосылды автор user2420234, көзі