2014-04-20 3 views
0

내가 실행하면 이미지를 클릭하면 1내 앱이 시작로드

에 의한 값 (goldCount) 증가를 만드는 응용 프로그램이 후 "불행하게도, 응용 프로그램이 중지되었습니다"대화로 종료 앱이 스플래시를 실행 앱을 시작하기 전에 그러나 스플래시가로드 된 후 앱이 종료되고 "불행히도 앱이 중지되었습니다."라는 오류 메시지가 표시되며 LogCat에 오류 목록이 표시됩니다 (this screenshot 참조). 내가 그들을 구현하려고 할 때 그것은 단지 일어난대로의 된 SharedPreferences 함께 할 수있는 뭔가가 생각

public class MainClass extends Activity implements OnClickListener { 

    SharedPreferences prefs = getSharedPreferences("LeagueClicker", Context.MODE_PRIVATE); 

    public float goldCount = 0.0f; 
    Button minionClick; 
    TextView textGoldCount; 
    String textTotal; 

    @Override 
    public void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //Set fullscreen 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.mainlayout); 

     goldCount = prefs.getFloat("goldCount", 0.0f); 

     //Linking the variables 
     minionClick = (Button) findViewById(R.id.minioncentreid); 
     textGoldCount = (TextView) findViewById(R.id.textviewtop); 

     //String which will display at the top of the app 
     textTotal = goldCount + " Gold"; 

     //Setting TextView to the String 
     textGoldCount.setText(textTotal); 
     textGoldCount.setGravity(Gravity.CENTER); 
     Typeface tf = Typeface.createFromAsset(getAssets(), "mechanical.ttf"); 
     textGoldCount.setTypeface(tf); 
     textGoldCount.setTextSize(35); 

     //Setting onClickListener 
     minionClick.setClickable(true); 

     minionClick.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch (v.getId()){ 
      case R.id.minioncentreid: 
       goldCount += 1.0; 
       prefs.edit().putFloat("goldCount", goldCount).commit(); 
       textTotal = goldCount + " Gold"; 
       textGoldCount.setText(textTotal); 
       textGoldCount.setGravity(Gravity.CENTER); 
       break; 
     } 
    } 
} 

: 여기

코드입니다.

누구든지 해결 방법을 알고 있습니까?

+1

logcat을 텍스트로 보내주십시오. 이미지가 아닌가요? –

+0

'onChartPreferences ("LeagueClicker", Context.MODE_PRIVATE);를'onCreate()'메쏘드로 옮겨보십시오. – Delpes

+0

나는 Delpes의 조언에 동의합니다. pref는 onCreate 외부에서 인스턴스화를 시도했기 때문에 MainClass의 18 번째 줄에 null 포인터 예외를 제공합니다. –

답변

0

활동이 생성 수명주기를 지나기 전에 getSharedPreferences()을 사용하여 prefs 필드를 인스턴스화하려고 시도했습니다. 이 시점에서 이러한 종류의 호출에 대한 컨텍스트를 준비 할 수는 없습니다.

이 변수 인스턴스화를 onCreate() 메서드로 가장 잘 옮길 수 있습니다.

이유를 더 잘 이해하려면 reading about the activity lifecycle을 강력히 권장합니다.

0

아래의 내용을 setContentView (R.layout.mainlayout); 방법.

SharedPreferences prefs = getSharedPreferences("LeagueClicker", Context.MODE_PRIVATE);