Java 设置按钮字体时TabGroupactivity上的NullPointerException

Java 设置按钮字体时TabGroupactivity上的NullPointerException,java,android,tabs,Java,Android,Tabs,我在TabGroupActivity中加载的活动有点问题 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.user_profile); f = new Functions(); String j = f.getUserInfo(); arialFont = Typeface.create

我在TabGroupActivity中加载的活动有点问题

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.user_profile);

    f = new Functions();
   String  j = f.getUserInfo();

  arialFont = Typeface.createFromAsset(this.getAssets(),"Arial.ttf");  


  username = (TextView)findViewById(R.id.txtProfileName);
  firstname = (TextView)findViewById(R.id.txtName);
  Address1 = (TextView)findViewById(R.id.txtAdd1);

  Cit = (TextView)findViewById(R.id.txtCity);
  PostCode = (TextView)findViewById(R.id.txtPost);
  Coun = (TextView)findViewById(R.id.txtCountry);
  Phon = (TextView)findViewById(R.id.txtPhone);

  dob = (TextView)findViewById(R.id.txtDOB);
  gender = (TextView)findViewById(R.id.txtGender);

  yourDetails = (Button)findViewById(R.id.Button01);
  payment = (Button)findViewById(R.id.Button02);
  billing = (Button)findViewById(R.id.Button03);
  history = (Button)findViewById(R.id.Button04);

  yourDetails.setTypeface(arialFont); <-- Null Pointer exception starts here
  payment.setTypeface(arialFont);
  billing.setTypeface(arialFont);
  history.setTypeface(arialFont);

  try {
    parseData(j);

} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
我知道问题在于将按钮的字体设置为Arial,问题在于我不明白为什么会出现这种问题。如果我把setTypeface行注释掉,它会工作得很好,并且会转到其他活动,这些活动在TabGroupActivity中设置了按钮字体,这让我更加困惑


对任何能向我解释这一点的人来说,最重要的是,在我之前开发此应用程序的程序员将历史按钮的id改为“btnHistory”,而不是“Button04”。当然,这会在空指针错误中得到解决,因为该活动中不存在id“Button04”

第83行yourDetails是否可能为空?为了验证其是否相关,可以在删除setTypeface调用后调用yourDetails中的某些方法。通过这种方式,您可以知道它与findViewById无关,可能是一个错误。解决了问题,在我之前开发此应用程序的编码人员将历史按钮的id改为“btnHistory”,而不是“Button04”。自然地,这在一个空指针错误中得到了解决。非常感谢你为我指明了正确的方向我很高兴你能弄明白。我强烈建议让这些按钮名称更具描述性,就像之前的编码员那样。当你有更多的代码运行时,它会为你省去很多麻烦,因为
btnHistory
对于历史按钮来说比
button04
更容易记住。完全取决于你,但是有一个标准的命名惯例会帮你很多。谢谢你的建议,我正在这样做。我需要去掉并添加很多功能,因此自然会有很多随机名称的构建。将来我的名字会更具描述性。
02-27 13:22:47.278: E/AndroidRuntime(929): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Ticketline.Ticketline/com.Ticketline.Ticketline.UserProfile}: java.lang.NullPointerException
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:1796)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
02-27 13:22:47.278: E/AndroidRuntime(929):  at com.Ticketline.Ticketline.TabGroupActivity.startChildActivity(TabGroupActivity.java:61)
02-27 13:22:47.278: E/AndroidRuntime(929):  at com.Ticketline.Ticketline.Account.onCreate(Account.java:33)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.Activity.performCreate(Activity.java:4465)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
02-27 13:22:47.278: E/AndroidRuntime(929):  ... 18 more
02-27 13:22:47.278: E/AndroidRuntime(929): Caused by: java.lang.NullPointerException
02-27 13:22:47.278: E/AndroidRuntime(929):  at com.Ticketline.Ticketline.UserProfile.onCreate(UserProfile.java:83)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.Activity.performCreate(Activity.java:4465)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-27 13:22:47.278: E/AndroidRuntime(929):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
02-27 13:22:47.278: E/AndroidRuntime(929):  ... 26 more