2015-04-28 120 views
0

我試圖保存到共享首選項。我希望能夠從共享首選項加載,但是當我保存或加載應用程序崩潰時。保存到共享首選項時應用程序崩潰

我也希望能夠在我的應用程序啓動時讓我的處理程序/可運行的恢復。我怎樣才能做到這一點?

這裏是我的代碼:

public class MainActivity extends ActionBarActivity { 

    public void save(){ 
     Editor editor = pref.edit(); 
     editor.putInt("countertest", counter); 
     editor.commit(); 
    }//end of save 


    public void read(){ 
     counter = pref.getInt("countertest", counter); 
    }//end of read 


     Handler testHandler = new Handler(); 
     int counter; 
     TextView testView; 
     Button testButton; 
     Runnable Runnable0; 
     SharedPreferences pref; 




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


     testView = (TextView) findViewById(R.id.testView); 
     testButton = (Button) this.findViewById(R.id.testButton); 



    // read(); 
     testView.setText(Integer.toString(counter)); 




    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 


@Override 
protected void onResume() { 


    //read(); 


    final Runnable Runnable0 = new Runnable() { 
     @Override 
     public void run() { 
      counter += 1; 
      testView.setText(Integer.toString(counter)); 
      testHandler.postDelayed(this, 1000); 
//   save(); 
      }// end of if 
    }; 




    /* button click */ 
    testButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      /* Start runnable */ 

       testButton.setEnabled(false); 
       counter -= 5; 
       //save(); 
       testView.setText(Integer.toString(counter)); 
       testHandler.post(Runnable0); 



     }// end of onClick 
    });// end of blingButton onClickListener  

    super.onResume(); 

}//end of onResume 

@Override 
protected void onPause() { 
    //save(); 
    testHandler.removeCallbacks(Runnable0); 
    super.onPause(); 
}//end of onPause 
} 

回答

4

您還沒有初始化pref對象。你剛剛宣佈它。因此,你需要通過

pref = getSharedPreferences("MySP", 0); 

OR

pref = PreferenceManager.getDefaultSharedPreferences(this); 
做它 onCreate()