我有一個ImageButton
,我希望每次調用onResume()
或onCreate()
時都更改圖像。Android:這個應用程序的最佳層次結構是什麼?
我有改變圖像,稱爲mUpdateBackground
的方法,但是我有麻煩工作如何結構中的分級,使得mUpdateBackground
,(含有ImageButton
)可從onResume()
和onCreate()
被調用。
如果backgroundPic
爲真,圖像將被隨機選擇,如果爲false,則將使用R.drawable.bg0
代替。
有一個單獨的設置活動,用於管理backgroundPic
變量設置爲true還是false。
這裏是我到目前爲止的代碼:
1 public class MainActivity extends Activity {
2 public static ImageButton mGetClickTime;
3 @Override
4 protected void onResume() {
5 super.onResume();
6 //Get shared preferences
7 mSharedPreferences = getSharedPreferences(PREFERENCES_NAME, MODE_PRIVATE);
8 dp = mSharedPreferences.getInt("DecimalPlaces", 0);
9 length_setting = mSharedPreferences.getInt("MSSelector", 1);
10 backgroundPic = mSharedPreferences.getBoolean("BackgroundPic", true);
11 //mUpdateBackground();
12 }
12 @Override
13 protected void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.activity_main);
16
17 //Get shared preferences
18 mSharedPreferences = getSharedPreferences(PREFERENCES_NAME, MODE_PRIVATE);
19 dp = mSharedPreferences.getInt("DecimalPlaces", 0);
20 length_setting = mSharedPreferences.getInt("MSSelector", 5);
21 mUpdateBackground();
22 mGetClickTime.setOnClickListener(new View.OnClickListener() {
23 mUpdateBackground();
24 }
25 }
26 }
27 public void mUpdateBackground() {
28 if (backgroundPic) {
29 int[] imageIds = {
30 R.drawable.bg1,
31 R.drawable.bg2,
32 R.drawable.bg3,
33 R.drawable.bg4,
34
35 };
36 Random generator = new Random();
37 randomImageId = imageIds[generator.nextInt(imageIds.length)];
38 Log.d("1", "backgroundPic: "+randomImageId);
39 }
40 else {
41 randomImageId = R.drawable.bg0;
42 Log.d("1", "backgroundPic: "+randomImageId);
43 }
44 mGetClickTime = (ImageButton) findViewById(R.id.clicker);
45 mGetClickTime.setImageResource(randomImageId);
46 }
我有這樣做的問題是,如果我取消線11我得到一個NullPointerException異常。有沒有更好的方法來組織這些代碼?
你mGetClickTime是靜態的!這是錯誤的,因爲它取決於活動。 mUpdateBackground方法中的哪一行是拋出NPE? –
同樣在標準約定中,方法在開始時並沒有用m命名。m表示一個對象是一個成員變量,即它綁定到這個類的實例。 s是用於靜態的,所以如果你有一個靜態變量,它應該被命名爲sVariable。 –