我認爲下面的問題會很愚蠢(我只是編碼方面的初學者),但我已經坐了很長時間,最後決定放棄它。我有一個方法作爲getName()在類級別訪問string.xml文件並從那裏獲取條目。Android中的奇異NullPointerException
CODE:
public String getName()
{
String name = null;
try {
System.out.println("Inside getName");
String app_id = MainActivity.this.getResources().getString(R.string.app_id);
System.out.println(app_id);
fb = new Facebook(app_id);
System.out.println("Before the JSON");
String jsonUser = fb.request("me");
System.out.println("Successful in fb.request");
obj=Util.parseJson(jsonUser);
System.out.println("Successful in parsejson");
name = obj.optString("username");
} catch...
}
當我打電話上述方法中,它在
String app_id = getString(R.string.app_id);
有趣和最好的部分返回空指針異常是,我有完全相同的線在所述的onCreate()方法如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.name_text_view);
b = (ImageView) findViewById(R.id.postbutton);
snap = (ImageView) findViewById(R.id.camera_image_view);
sp = getPreferences(MODE_PRIVATE);
**String app_id = getString(R.string.app_id);**
fb = new Facebook(app_id);
System.out.println("The app_id is " + app_id);
String access_token = sp.getString("access_token", null);
long expires = sp.getLong("access_expires", 0);
}
This不會拋出任何空指針異常。我的問題是,爲什麼它只在方法getName()上拋出NullPointerException。它與R的範圍有什麼關係?我完全迷失在這裏,感到非常尷尬的發佈這樣的問題,但也無法接受這一事實,它拋出我這個愚蠢的錯誤。任何幫助將瘋狂讚賞傢伙!
UPDATE:
logcat的:
12-26 17:24:07.330: W/dalvikvm(23184): threadid=1: thread exiting with uncaught exception (group=0x4118d438)
12-26 17:24:07.330: E/AndroidRuntime(23184): FATAL EXCEPTION: main
12-26 17:24:07.330: E/AndroidRuntime(23184): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.facebook_integration/com.example.facebook_integration.SQLiteDemoActivity}: java.lang.NullPointerException
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.app.ActivityThread.access$600(ActivityThread.java:138)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.os.Handler.dispatchMessage(Handler.java:99)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.os.Looper.loop(Looper.java:137)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.app.ActivityThread.main(ActivityThread.java:4954)
12-26 17:24:07.330: E/AndroidRuntime(23184): at java.lang.reflect.Method.invokeNative(Native Method)
12-26 17:24:07.330: E/AndroidRuntime(23184): at java.lang.reflect.Method.invoke(Method.java:511)
12-26 17:24:07.330: E/AndroidRuntime(23184): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
12-26 17:24:07.330: E/AndroidRuntime(23184): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
12-26 17:24:07.330: E/AndroidRuntime(23184): at dalvik.system.NativeStart.main(Native Method)
12-26 17:24:07.330: E/AndroidRuntime(23184): Caused by: java.lang.NullPointerException
12-26 17:24:07.330: E/AndroidRuntime(23184): at com.example.facebook_integration.SQLiteDemoActivity.onCreate(SQLiteDemoActivity.java:33)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.app.Activity.performCreate(Activity.java:5252)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082)
12-26 17:24:07.330: E/AndroidRuntime(23184): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2038)
12-26 17:24:07.330: E/AndroidRuntime(23184): ... 11 more
更新2:
的strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Facebook_Integration</string>
<string name="action_settings">Settings</string>
<string name="app_id">594458613962731</string>
<string name="hello_world">Hello world!</string>
<string name="title_activity_snap__image_view">Snap_ImageView</string>
<string name="album_name">San_Pictures</string>
<string name="title_activity_android_custom_gallery">AndroidCustomGalleryActivity</string>
<string name="title_activity_full_screen">FullScreen</string>
<string name="title_activity_sqlite_demo">SQLiteDemoActivity</string>
</resources>
更新3:
正如我處理與Facebook我認爲這個問題是與創建Facebook的對象(FB)的情況下,所以我評論說行,然後再次嘗試,但它仍然說的NullPointerException在
String app_id = MainActivity.this.getResources().getString(R.string.app_id);
如果有人處理過這樣的情況,請讓我知道。
UPDATE 4:
MyApp的結構:
以下是我的應用程序的要點
1.登錄到Facebook上。
2.拍照。
3.存儲在數據庫中拍攝的照片的用戶名和路徑。
最初,我的主要活動有Facebook圖像,它會將我登錄到Facebook並檢索用戶名,從而在同一主要活動的textview中設置它。 第二個攝像頭按鈕,將我帶到相機拍照。 拍完照片後,第三項活動應顯示用戶名和圖片存儲路徑(這是我無法再次獲取用戶名的地方)。
可以肯定的是,可以檢查R.java是否在'public static final class string'下有'app_id' – Sudhee
它是在「public static final class String」裏面的!感謝您的考慮。 – San
你是從廣播接收機還是服務中調用getName? – Sudhee