需要你的專家在那裏的建議。我剛剛開始使用Android 編程,雖然我終於得到了我想要的「Hello World」所要做的事情,但我覺得 好像我在扼殺我的方式而不是理解概念。傳遞資源的更好方法是什麼?
我創建了三個EditText框。在那些我創造了三個Spinners之下。在Spinner中選擇一個 數字,它將顯示在相應的EditText框中。 微調1相關的EditText 1,微調2到EditText 2和微調3到 EditText 3.我有一個時間讓這個工作。我確實有一些 清理工作要做。
在我的啓動I類:
EditText [] pick_nums = new EditText[3];
pick_nums[0] = (EditText) findViewById(R.id.r1c1);
pick_nums[1] = (EditText) findViewById(R.id.r1c2);
pick_nums[2] = (EditText) findViewById(R.id.r1c3);
Spinner test1 = (Spinner) findViewById(R.id.spin_pick_num1);
Spinner test2 = (Spinner) findViewById(R.id.spin_pick_num2);
Spinner test3 = (Spinner) findViewById(R.id.spin_pick_num3);
//我創建了一個類來初始化微調。
Context g = getApplicationContext();
Initialize_stuff spin1 = new Initialize_stuff(test1, g);
Initialize_stuff spin2 = new Initialize_stuff(test2, g);
Initialize_stuff spin3 = new Initialize_stuff(test3, g);
//我創建了一個類,把數字放在相應的EditText框中。 我想避免讓用戶按下一個按鈕來填充 ,並且一旦有三個數字在,我會與他們做一些事情,而不必按 按下按鈕。
Handle_Picks hp = new Handle_Picks(g, pick_nums);
//這裏是我認爲它會變得笨拙和尷尬的地方。爲了使Handle_Picks正確工作 我創建了一個方法來設置上下文,一個EditTexts數組和一個Handle_Picks hp類的引用。
Spinner_Listener listen = new Spinner_Listener();
listen.set_context(g, pick_nums, hp);
test1.setOnItemSelectedListener(listen);
test2.setOnItemSelectedListener(listen);
test3.setOnItemSelectedListener(listen);
//在Spinner_Listener類
public class Spinner_Listener implements OnItemSelectedListener
static Handle_Picks hp1; //set in a method
private String num;
String v;
String spin_id;
int vv;
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id)
{
//To make this work I had to find the name of the spinner that was
//used so I could correlate it with the right EditText
vv = parent.getId();
v = parent.getResources().getResourceName(vv);
spin_id = parent.getResources().getResourceEntryName(vv);
setNum(parent.getItemAtPosition(pos).toString());
}
public void setNum(String s)
{
num = s;
hp1.handle_nums(spin_id, num);
}
//終於類Handle_Picks我:
public class Handle_Picks extends Activity
{
static Context theContext;
EditText [] et;
String spin_num;
// constructor
Handle_Picks(Context f, EditText[] array)
{
theContext = f;
et = array;
}
public void handle_nums(String id, String aNumber)
{
spin_num = id;
if (spin_num.equalsIgnoreCase("spin_pick_num1"))
et[0].setText(aNumber);
else if (spin_num.equalsIgnoreCase("spin_pick_num2"))
et[1].setText(aNumber);
else if (spin_num.equalsIgnoreCase("spin_pick_num3"))
et[2].setText(aNumber);
}
有沒有更好的方式來傳遞或參考資料各地的各種類? 必須將Context和數組EditText傳遞給類Handle_Picks 才能使用類Spinner_Listener中的Handle_Picks看起來不正確。 似乎有點危險。
什麼是更好的方法?