2011-07-16 7 views
5

メインアクティビティでgetResourcesを呼び出すたびにエラーが発生し、アプリケーションは強制終了されます。これは、私がgetApplicationContext()。getResources()を呼び出した場合でも、Eclipsのまったく新しいプロジェクトであっても発生します。コールの前に何かする必要がありますか? OpenEtnaとのAndroid 2.1とAVDとLG GW620のエラー(2.1)getResourceエラー

MainActivity.java:

package com.robin.blatest; 

import android.app.Activity; 
import android.content.res.Resources; 
import android.os.Bundle; 

public class MainActivity extends Activity { 

    Resources res = this.getResources(); 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

たManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.robin.blatest" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="7" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".MainActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 

LogCat:

W/dalvikvm( 229): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
E/AndroidRuntime( 229): Uncaught handler: thread main exiting due to uncaught exception 
E/AndroidRuntime( 229): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.robin.blatest/com.robin.blatest.MainActivity}: java.lang.NullPointerException 
E/AndroidRuntime( 229): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 
E/AndroidRuntime( 229): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
E/AndroidRuntime( 229): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
E/AndroidRuntime( 229): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
E/AndroidRuntime( 229): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime( 229): at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime( 229): at android.app.ActivityThread.main(ActivityThread.java:4363) 
E/AndroidRuntime( 229): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 229): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime( 229): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
E/AndroidRuntime( 229): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
E/AndroidRuntime( 229): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime( 229): Caused by: java.lang.NullPointerException 
E/AndroidRuntime( 229): at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 
E/AndroidRuntime( 229): at com.robin.blatest.MainActivity.<init>(MainActivity.java:9) 
E/AndroidRuntime( 229): at java.lang.Class.newInstanceImpl(Native Method) 
E/AndroidRuntime( 229): at java.lang.Class.newInstance(Class.java:1479) 
E/AndroidRuntime( 229): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
E/AndroidRuntime( 229): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409) 
E/AndroidRuntime( 229): ... 11 more 

乾杯ロビン

:追加コード

答えて

11

あなたはフィールド宣言に

Resources res = this.getResources(); 

を行うことはできません。その時点ではnullです!

代わりにonCreateに入れてください。あなたがデータという含むフィールドを望んでいた場合

private Resources res = null; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    res = this.getResources(); 
} 

あなたのような何かをしたいです。

でも、いつでも必要なときにthis.getResources()を実行するのは簡単です。

+0

doh ..ありがとう!私はそれを考えていたはずですが、私はしませんでした。 – globin

+1

コンストラクタでも動作しません。 –

2

getResources()-methodは、Context-classの方法です。

アクティビティでは、thisを使用してアクセスできます。

しかし、コードの一部を表示する必要があります。

+0

リスナー宣言のようなものでなければ 'this.getResorces()'は 'getResources'と同じでなければなりません。 added code – globin

+0

しかし、これは 'getApplicationContext()' -callと同じではありません。投稿されたコードにLogCatの出力を提供する必要があります。私は自分でそれをテストするだろうが、私はここでSDKを実行していない。 –

+0

私はそれを言っていませんでしたが、私もそれを試みました。 LogCatはすでにここにあります。 – globin

関連する問題