2010-02-21 44 views
0

需要你的專家在那裏的建議。我剛剛開始使用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看起來不正確。 似乎有點危險。

什麼是更好的方法?

回答

1

嗯......呃...很少有你在這裏的東西,我喜歡很多。應對簡單的東西:

  • 要獲得Spinner的值,調用getSelectedItem()。根據Spinner的價值,您無法根據資源來填充EditText。在您的Spinner_ListeneronItemSelected()方法中,您的Spinner被稱爲parentSpinner繼承自AdapterView,並且getSelectedItem()AdapterView上的方法)。

  • 不要致電getApplicationContext(),特別是與UI相關的東西。您的ActivityContext - 只是使用它。

  • 千萬不要在Activity上實施構造函數(例如Handle_Picks)。

  • 不要直接創建Activity的實例(例如new Handle_Picks())。

鑑於以上所述,您根本不需要Handle_Picks

相關問題