2014-10-03 111 views
0

我的應用程序有時崩潰,我知道在哪裏,但我不知道爲什麼。請觀看此代碼:Android Nullpointer異常按鈕

private Button btFacebook  
@Override 
public final void onCreate(Bundle savedInstanceState) 
{ 
    .... 
    btFacebook  = (Button) findViewById(R.id.bt_fb_zaloguj); 
    btFacebook.setText(getResources().getString(R.string.act_logowanie_bt_facebook).toUpperCase()); //line crash 
    .... 
} 

爲什麼btFacebook有時爲空?

編輯:

> java.lang.RuntimeException: Unable to start activity ComponentInfo{pl.gosell.ghmaster/pl.gosell.ghmaster.activity.ActSplash}: java.lang.NullPointerException 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
android.app.ActivityThread.access$900(ActivityThread.java:161) 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 
android.os.Handler.dispatchMessage(Handler.java:102) 
android.os.Looper.loop(Looper.java:157) 
android.app.ActivityThread.main(ActivityThread.java:5356)8at java.lang.reflect.Method.invokeNative(Native Method) 
java.lang.reflect.Method.invoke(Method.java:515) 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
pl.gosell.ghmaster.activity.ActSplash.onActivityData(ActSplash.java:184) 
com.android.lifter.activity.ActivityBase.onCreate(ActivityBase.java:99) 
android.app.Activity.performCreate(Activity.java:5426) 
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 
19... 11 more 
+1

你的logcat在哪裏?發表它。 – 2014-10-03 07:17:50

+0

如果您的應用程序在加載時崩潰,則可能因爲上述原因,如果在加載後崩潰,則意味着該按鈕正在執行的任何功能都會導致崩潰。只有回答這個問題的方法是,如果你發佈錯誤的logcat,否則人們會盲目地給出答案。 – NightwareSystems 2014-10-03 09:15:39

回答

2

你錯過了

setContentView(R.layout.your_layout); 

,然後你初始化按鈕,如:

protected void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.your_layout); 
btFacebook  = (Button) findViewById(R.id.bt_fb_zaloguj); 
btFacebook.setText(getResources().getString(R.string.act_logowanie_bt_facebook).toUpperCase());  //line crash 
.... 
} 
+0

謝謝你的回覆,但我不會錯過setContentView(R.layout.your_layout); – michael 2014-10-03 09:00:28

+0

@michael你說**我的應用程序有時崩潰**完全是假的 – 2014-10-03 09:01:10

1

你的代碼看,如果ü錯過了這個。

super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

然後將其添加

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btFacebook = (Button) findViewById(R.id.bt_fb_zaloguj); 
    btFacebook.setText(getResources().getString(R.string.act_logowanie_bt_facebook).toUpperCase()); 
+0

謝謝你的回覆,但我不錯過super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); – michael 2014-10-03 09:00:59

+0

確定顯示你的logcat。 – Piyush 2014-10-03 09:04:58

-1

如果您已經在活動,你可以簡化你這樣調用

this.getString(R.string.act_logowanie_bt_facebook) 

此外,如果字符串是有它不應該放棄例外。我認爲你得到的例外是因爲Button。不知何故按鈕對象爲空。你能看看你的觀點,並檢查身份證是否相同?