2014-04-25 3 views
0

각 액티비티 버튼에 대해 assets 폴더에서 글꼴을 설정했는데, 왜 내가 56 번째 줄에 NPE가 있는지 이해하지 못합니다. pswET.setTypeface(tf); 어디에서 잘못 되었나요? 18 : 49.983 :Android NPE TypeFace

04-25 18 E/AndroidRuntime이 (1853)에 의해 발생 : java.lang.NullPointerException이 입력 코드 여기 -25 18 : 18 : 49.983 : E/AndroidRuntime (1853)에서 메인 .Login.onCreate (Login.java:56는)

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    SharedPreferences sharedPrefs = getSharedPreferences("SharedPrefName", MODE_PRIVATE); 
    boolean value; 
    String name = getPackageName() + "_PREFERENCES"; 
    SharedPreferences sp = getSharedPreferences(name, MODE_PRIVATE); 
    //control if there is no password 
    if (!sp.contains(Util.PREF_PSW) || "".equals(sp.getString(Util.PREF_PSW, null))) { 

     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     finish(); 
     //check if the key is stored yes/no for the password 
    } if (value = sharedPrefs.getBoolean("check", true)) { 
     setContentView(R.layout.tastiera_password); 
    }else { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     finish(); 
    } 
    Typeface tf=Typeface.createFromAsset(getAssets(),"roboto.ttf"); 
    pswET = (TextView) findViewById(R.id.psw); 
    pswET.setTypeface(tf); 
    bb1 = (Button) findViewById(R.id.b1); 
    bb1.setTypeface(tf); 
    bb2 = (Button) findViewById(R.id.b2); 
    bb2.setTypeface(tf); 
    bb3 = (Button) findViewById(R.id.b3); 
    bb3.setTypeface(tf); 
    bb4 = (Button) findViewById(R.id.b4); 
    bb4.setTypeface(tf); 
    bb5 = (Button) findViewById(R.id.b5); 
    bb5.setTypeface(tf); 
    bb6 = (Button) findViewById(R.id.b6); 
    bb6.setTypeface(tf); 
    bb7 = (Button) findViewById(R.id.b7); 
    bb7.setTypeface(tf); 
    bb8 = (Button) findViewById(R.id.b8); 
    bb8.setTypeface(tf); 
    bb9 = (Button) findViewById(R.id.b9); 
    bb9.setTypeface(tf); 
    bb0 = (Button) findViewById(R.id.b0); 
    bb0.setTypeface(tf); 
     // Set the listener for all the buttons 
    int numberButtons[] = { R.id.b1, R.id.b2, R.id.b3, 
     R.id.b4, R.id.b5, R.id.b6, R.id.b7, 
     R.id.b8, R.id.b9, R.id.b0 
    }; 
    NumberButtonClickListener numberClickListener = new NumberButtonClickListener(); 
    for(int id : numberButtons) { 
    View v = findViewById(id); 
    v.setOnClickListener(numberClickListener); 
    } 
    } 
private class NumberButtonClickListener implements OnClickListener { 
    @Override 
    public void onClick(View v) { 
     String text = (String) ((Button)v).getText();   

      setCurrentString(getCurrentString()+text); 

    } 
    public void setCurrentString(String s) { 
      currentString = s; 
      pswET.setText(s); 
     } 
     public String getCurrentString() { 
      return currentString; 
     } 

} 

답변

0

귀하의 findViewById를 사용하면 콘텐츠보기를 설정하지 않았거나 당신이 ID를 사용하기 때문에 그 존재하지 않는 하나 때문에 실패했습니다. finish()는 반환 할 함수의 실행을 종료하지 않는다는 것을 기억하십시오. if/else의 해당 분기로 이동하면 내용보기가 전송되지 않고 findViewById가 항상 null을 반환합니다.