0
我有三個功能在我Main
類,onCreate
,onClick
和click
,我有兩個選擇,申報TextViews
,並在項目作爲全局變量,這意味着他們將留下的開頭有一些其他的看法在整個應用程序生命週期中,或者在每個函數中分別獲取它們(將導致計算機工作更多,但變量不會一直保留在內存中)。爲了說明這個問題進一步:設置意見Android的全局變量
選項1:
public static final int L = 6;
TextView[] textViews = new TextView[L];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Random rand = new Random();
int[] digits = {rand.nextInt(10), rand.nextInt(10), rand.nextInt(10), rand.nextInt(10), rand.nextInt(10), rand.nextInt(10)};
for (int i = 0; i < L; i++) {
textViews[i] = (TextView) findViewById(getResources().getIdentifier("num" + String.valueOf(i), "id", getPackageName()));
textViews[i].setOnClickListener(this);
textViews[i].setText(String.valueOf(digits[i]));
}
}
@Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.num0:
click(0);
break;
case R.id.num1:
click(1);
break;
case R.id.num2:
click(2);
break;
case R.id.num3:
click(3);
break;
case R.id.num4:
click(4);
break;
case R.id.num5:
click(5);
break;
}
}
public void click(int clicked) {
textViews[clicked].setText("Clicked");
}
選項2:(請注意,以縮短時間 - 變化是在最後一個函數)。
public static final int L = 6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Random rand = new Random();
int[] digits = {rand.nextInt(10), rand.nextInt(10), rand.nextInt(10), rand.nextInt(10), rand.nextInt(10), rand.nextInt(10)};
for (int i = 0; i < L; i++) {
textViews[i] = (TextView) findViewById(getResources().getIdentifier("num" + String.valueOf(i), "id", getPackageName()));
textViews[i].setOnClickListener(this);
textViews[i].setText(String.valueOf(digits[i]));
}
}
@Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.num0:
click(0);
break;
case R.id.num1:
click(1);
break;
case R.id.num2:
click(2);
break;
case R.id.num3:
click(3);
break;
case R.id.num4:
click(4);
break;
case R.id.num5:
click(5);
break;
}
}
public void click(int clicked) {
((TextView) findViewById(getResources().getIdentifier("num" + String.valueOf(clicked),"id",getPackageName())).setText("Clicked");
}
請考慮到我有超過TextView
陣列多,而且在某些功能我要再次獲得5次,這將是更好地將它們聲明爲全局變量?我在大部分時間使用全局變量讀取某處並不好,這與功能的整個想法是背道而馳的,但在這裏似乎更簡單..對不起我的英語,謝謝大家。
我實際上使用它,因爲你說,我只是改變了代碼,以適應這個問題:)所以我可以聲明全局的東西,不擔心表現?很棒:) – DAVIDBALAS1