0

非常に奇妙でイライラするエラーです。

アプリをエミュレーターにロードして開こうとするとすぐに、on create メソッド内で null ポインター例外エラーが発生します。

タイトルにあるように、このコードは何週間も完全に機能しています。

ログキャットは次のとおりです。

02-14 20:03:45.813: E/AndroidRuntime(285): FATAL EXCEPTION: main
02-14 20:03:45.813: E/AndroidRuntime(285): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.flybase2/com.example.flybase2.MainActivity}: java.lang.NullPointerException
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.os.Looper.loop(Looper.java:123)
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.app.ActivityThread.main(ActivityThread.java:4627)
02-14 20:03:45.813: E/AndroidRuntime(285):  at java.lang.reflect.Method.invokeNative(Native Method)
02-14 20:03:45.813: E/AndroidRuntime(285):  at java.lang.reflect.Method.invoke(Method.java:521)
02-14 20:03:45.813: E/AndroidRuntime(285):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-14 20:03:45.813: E/AndroidRuntime(285):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-14 20:03:45.813: E/AndroidRuntime(285):  at dalvik.system.NativeStart.main(Native Method)
02-14 20:03:45.813: E/AndroidRuntime(285): Caused by: java.lang.NullPointerException
02-14 20:03:45.813: E/AndroidRuntime(285):  at com.example.flybase2.MainActivity.onCreate(MainActivity.java:33)
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-14 20:03:45.813: E/AndroidRuntime(285):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
02-14 20:03:45.813: E/AndroidRuntime(285):  ... 11 more

そしてここにクラスがあります:

package com.example.flybase2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{
Button bContacts;
Button bAppointment;
Button bShopping;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.appmenus);

     bContacts = (Button) findViewById(R.id.btnCons);
     bAppointment = (Button) findViewById(R.id.btnAppoint);
     bShopping = (Button) findViewById(R.id.btnShop);

    bContacts.setOnClickListener(this);
    bAppointment.setOnClickListener(this);
    bShopping.setOnClickListener(this);

}

@Override
public void onClick(View passedAppChoice) {
    switch(passedAppChoice.getId()){

    case (R.id.btnCons):
    Intent cons = new Intent("com.example.flybase2.contacts");
    startActivity(cons);
    break;

    case (R.id.btnAppoint):
        Intent Appoint = new Intent("com.example.flybase2.appointmantMenu");
        startActivity(Appoint);
        break;

    case (R.id.btnShop):
        Intent shop = new Intent("com.example.flybase2.ShoppingList");
        startActivity(shop);
        break;
    }
  }
}

Appmenus.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="84dp"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/imgLink"
    android:layout_width="60dp"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:layout_weight="0.91"
    android:src="@drawable/menulist" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="165dp"
    android:layout_height="match_parent"
    android:layout_weight="0.14"
    android:gravity="center"
    android:text="Menu"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="40sp" />

</LinearLayout>

<ScrollView
android:layout_width="match_parent"
android:layout_height="fill_parent" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
    android:id="@+id/btnCons"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:drawableLeft="@drawable/consicon"
    android:src="@drawable/consicon"
    android:text="Contacts " />

<Button
    android:id="@+id/btnToDo"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:drawableLeft="@drawable/todo"
    android:src="@drawable/todo"
    android:text="&apos;To Do&apos; List" />

   <Button
       android:id="@+id/btnShop"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_margin="20dp"
       android:drawableLeft="@drawable/shoppingmenu"
       android:src="@drawable/shoppingmenu"
       android:text="Shopping List" />

       <Button
           android:id="@+id/btnAppoint"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_margin="20dp"
           android:drawableLeft="@drawable/appointmainicon"
           android:src="@drawable/appointmainicon"
           android:text="Appointment List" />

</LinearLayout>

</ScrollView>
</LinearLayout>

うまくいけば、誰かが私が間違っている場所を見ることができます!.

4

3 に答える 3

0

最終的に新しいプロジェクトを開始し、コードをコピーするだけだったので、非常に迅速でした。それは今働いています。何が起こったのかわかりませんが、XML appmenu.xml ファイル レイアウトの何らかの破損が原因であると考えています。なんらかの理由で、予定ボタンが明らかにそこにあり、その ID によって参照されているにもかかわらず、予定ボタンが Eclipse によって「表示」されなくなったと思います。貢献してくれたすべての人に感謝します。

于 2013-02-14T22:30:14.210 に答える
0

考えられるいくつかのこと:

  • 上記R.layout.appmenusのすべてのボタンが含まれています (ID を確認してください)。R.id はアプリ全体の名前空間であるため、他のレイアウトにもあった可能性があります
  • インテントを開始する方法は奇妙に思えます。これは、明示的なインテントを開始する方法ではありません。

明示的インテントは次の形式にする必要があります。

Intent explicitIntent = new Intent(InvokingActivity.this,InvokedActivity.class);
startActivity(explicitIntent);
于 2013-02-14T20:20:58.697 に答える
0

ボタン オブジェクトを初期化した直後に、onCreate にこのログ出力を追加します。

  Log.d("MainActivityTAG", "bContacts ="+bContacts+ ", bAppointment="+bAppointment+", bShopping="+bShopping);

以下のコードのボタン オブジェクトの 1 つがnull.

 bContacts = (Button) findViewById(R.id.btnCons);
 bAppointment = (Button) findViewById(R.id.btnAppoint);
 bShopping = (Button) findViewById(R.id.btnShop);

上記のログ印刷により、どのボタン インスタンスがnullであるかがわかり、間違った ID のボタンを取得しているか、これらのボタンのいずれも定義されていない間違ったレイアウトを設定しているかどうかがわかります。

于 2013-02-14T20:25:32.203 に答える