1

起動時にアプリがクラッシュします。どうしてか分かりません。私はそれを正しくやったと思います。そして日食はエラーを表示しません、

MainActivity.java (編集済み)

    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)

編集:追加した後: WebView mWebview =(WebView) findViewById(R.id.webView1); *同じエラーが表示されます*

編集:すべて編集した後。それはまだクラッシュします。完全なコードを投稿しました。

4

4 に答える 4

0

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");

      } 
于 2013-06-24T12:46:14.963 に答える
0

mWebview可能nullです。あなたはそれをバインドする必要があります:

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

またはそれを開始します:

mWebView = new WebView(this);

あなたのサフィックス m は「メンバー」を表していると思います。そのため、onCreate の外で宣言し、onCreate メソッド内でバインドまたは開始します。

アップデート:

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");

} 
于 2013-06-24T12:47:04.770 に答える