2012-02-08 5 views
-1

나는 제대로 시작되지 않는 아주 간단한 앱을 가지고 있습니다. 앱은 스플래시 화면을로드 한 다음 기본 앱을로드해야합니다. 어떤 이유로 지금은 작동하지 않습니다 -Android 앱에서 NullPointerException을 디버깅하는 방법은 무엇입니까?

로그 캣 : SplashScreen로 (welcome.xml)에 대한

02-08 13:30:41.846: E/AndroidRuntime(275): Uncaught handler: thread main exiting due to uncaught exception 
02-08 13:30:41.865: E/AndroidRuntime(275): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.KES.GApps/com.KES.GApps.Splashscreen}: java.lang.NullPointerException 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.os.Looper.loop(Looper.java:123) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.app.ActivityThread.main(ActivityThread.java:4363) 
02-08 13:30:41.865: E/AndroidRuntime(275): at java.lang.reflect.Method.invokeNative(Native Method) 
02-08 13:30:41.865: E/AndroidRuntime(275): at java.lang.reflect.Method.invoke(Method.java:521) 
02-08 13:30:41.865: E/AndroidRuntime(275): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
02-08 13:30:41.865: E/AndroidRuntime(275): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
02-08 13:30:41.865: E/AndroidRuntime(275): at dalvik.system.NativeStart.main(Native Method) 
02-08 13:30:41.865: E/AndroidRuntime(275): Caused by: java.lang.NullPointerException 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.view.ViewGroup.addViewInner(ViewGroup.java:1860) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.view.ViewGroup.addView(ViewGroup.java:1756) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.view.ViewGroup.addView(ViewGroup.java:1736) 
02-08 13:30:41.865: E/AndroidRuntime(275): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:217) 
02-08 13:30:41.865: E/AndroidRuntime(275): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.app.Activity.setContentView(Activity.java:1633) 
02-08 13:30:41.865: E/AndroidRuntime(275): at com.KES.GApps.Splashscreen.onCreate(Splashscreen.java:13) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-08 13:30:41.865: E/AndroidRuntime(275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
02-08 13:30:41.865: E/AndroidRuntime(275): ... 11 more 
02-08 13:30:41.884: I/dalvikvm(275): threadid=7: reacting to signal 3 
02-08 13:30:41.884: E/dalvikvm(275): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 

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:background="@drawable/img1" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="200dp" 
     android:layout_gravity="fill_horizontal" 
     android:contentDescription="@string/crestinfo" 
     android:src="@drawable/logov2" /> 

    <TextView 
     android:id="@+id/welcomescreen" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="right" 
     android:text="@string/welcomescreen" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#ffffff" 
     android:textStyle="bold" android:padding="5dp" android:textSize="15pt" /> 

</LinearLayout> 

자바 :

package com.KES.GApps; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 


public class Splashscreen extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.welcome); 
     Thread splashThread = new Thread() { 
      @Override 
      public void run() { 
       try { 
        int waited = 0; 
        while (waited < 2000) { 
        sleep(100); 
        waited += 100; 
        } 
       } catch (InterruptedException e) { 
        // do nothing 
       } finally { 
        finish(); 
        Intent i = new Intent(); 
        i.setClassName("com.KES.GApps", 
           "com.KES.GApps.KingEdwardVIISchoolActivity"); 
        startActivity(i); 
       } 
      } 
     }; 
     splashThread.start(); 
    } 
} 

매니페스트 파일 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.KES.GApps" 
    android:versionCode="6" 
    android:versionName="1.5" > 

    <uses-sdk android:minSdkVersion="7" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:name="KingEdwardVIISchool" 
     android:debuggable="true" 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:launchMode="standard" > 
     <activity 
      android:name="KingEdwardVIISchoolActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="Splashscreen" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+0

res/layout 디렉토리에 welcome.xml 파일이 있습니까? R.java 자동 생성이 성공 했습니까? – Sly

+2

welcome.xml이 없으면 컴파일되지 않습니다. 내 생각 엔'startActivity (i);와 관련이있다. –

+0

내가 제안하는 첫 번째 것은 프로젝트를 청소하는 것이다. 오류에 따르면, 그것은'setContentView'에서 충돌합니다. 이것은 레이아웃을 찾을 수 없다는 것을 알려줍니다. Eclipse에서 프로젝트 -> 정리를 선택한 다음 자동으로 다시 빌드하도록 설정하지 않은 경우 다시 작성하십시오. – DeeV

답변

-3

매니페스트에 활동을 추가하고 권한을 추가 했습니까?

내가 당신에게 더 많은 것을 알려줄 수 있도록 목록을 추가하십시오.

권한이 거부 되었기 때문에 충돌이 일어 났을 수 있습니다. manifest.xml에서 권한을 확인하십시오.

+0

이렇게하면 다른 출력을 낼 수 있습니다. –

+1

@ a.ch. 어떻게 다른 출력을 줄까요 ??????? –

+0

그러면 다음과 같은 결과가 출력 될 것입니다 :'android.content.ActivityNotFoundException : 명시 적 활동 클래스를 찾을 수 없습니다. {your_class_here}; AndroidManifest.xml에서이 활동을 선언 했습니까? ' –

0

LogCat 출력에 따르면 문제는 welcome.xml 레이아웃 파일에 있습니다. 어떤 이유로 든 잘못 팽창되었습니다.

시도 android:textAppearance="?android:attr/textAppearanceLarge" 속성과 당신이 시작하기 전에 프로젝트에 Clean.. 명령을 실행 한을 확인 제거.

또한 는 XML 파일의 모든 참조는 유효 (즉 logov2, img1)을 보장한다. 일시적으로 XML 파일에서 모든 참조를 제거하고 도움이되는지 확인합니다.

+0

제안 해 주셔서 감사합니다. 나는 청소하고 그 건물이 자동적으로 있는지 확인했다. 위의 xml 섹션은 welcome.xml입니다. 명확하지 않은 경우 미안합니다. 나는 또한 android : textAppearance 비트를 제거하려고 노력했다. – Charlie

+0

'welcome.xml'에서 모든 참조를 제거하고 하드 코딩 된 텍스트 (배경 없음,'ImageView', no android : textAppearance 등등)가있는'TextView' 만 남기고 작동하는지 확인하십시오. –

+0

다시 도움이 필요합니다. welcome.xml을 삭제하고 텍스트만으로 간단한 페이지를 다시 만들려고했으나 작동하지 않습니다. 자바가 망가 졌는지 궁금합니다. – Charlie

0

welcome.xml 파일을 복사하고 임시 시간 동안 저장 한 다음 파일을 다시 삭제 한 후이 파일을 삭제하고 복사 한 welcome.xml 파일을 다시 붙여 넣습니다. 다시 실행하십시오. 앱이 실행됩니다.

+0

위 xml 섹션은 welcome.xml입니다. 미안해. 그게 확실하지 않아. – Charlie

+0

당신이 제안한대로 당신이 했습니까? PhoneWindow 메시지는 당신의 logcat에서와 같이이 problem.i에 의한 것입니다. 당신과 똑같이 직면하고 동일한 Phonewindow 오류를 얻었습니다. 그런 다음 나는 당신을 제안했습니다. 이것을 시도하십시오. –

+0

도움을 주셔서 감사합니다. 그러나 효과가 없습니다. 그것의 아주 이상한 것! – Charlie

0

나는 또한 한 번이 문제로 고통 받고 있었다. 그럼 내가 한 것은 id의 레이아웃을 내 R.java에서 복사하여 setContentView()에 직접 붙여 넣은 것입니다. 예, 여기에 id 환영의 경우 R.java ->layout입니다. 그럼 내 응용 프로그램은 예외없이 성공적으로 실행되었습니다. 따라서 나는 그저 일시적인 문제임을 깨달았다. 내 이클립스를 다시 시작한 후에 (때로는 시스템을 완전히 다시 시작해야 함) 나는 id를 다시 R.layout.welcome으로 바꿨고 정상적으로 작동했습니다. 희망이 도움이 ...

관련 문제