2017-03-08 18 views
0

這聽起來有點複雜。 我在一次活動中大約有15個紡紗廠,併爲這些紡紗廠的每個紡紗廠做出了獨特的方法。然後我啓動onCreate方法中的方法。爲多個Spinners創建了一個方法 - 如何將這些數據傳遞給新的活動?

方法例如:

//Relative Position Spinner 
public void relativePositionSpinner() { 
    Spinner relativePositionSpinner = (Spinner) findViewById(R.id.spinner_relativePosition); 

    ArrayAdapter relativePositionAdapter = ArrayAdapter.createFromResource(this, R.array.relativePosition, R.layout.spinner_item); 
    relativePositionSpinner.setAdapter(relativePositionAdapter); 
    //what happens when selected 
    relativePositionSpinner.setOnItemSelectedListener(this); 
} 

onCreate方法:

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

    //initiate all Spinners 
    relativePositionSpinner(); 
    absolutePositionSpinner(); 
etc. 

現在,我要的是每個微調的數據發送到另一個活動與按鈕的點擊。我知道,我可以用一個意圖做到這一點,在按鈕的方法是這樣使用putExtra:

public void openHandSummary() { 

    //Find the Button that gives option to enter new hand 
    Button handInputButton = (Button) findViewById(R.id.hand_input_button); 

    //set a click listener on Hand Analyzer Button 
    handInputButton.setOnClickListener(new View.OnClickListener() { 

     //below code will be executed when the new Hand Button is clicked 
     @Override 
     public void onClick(View view) { 
      Intent handSummaryIntent = new Intent(NewHandActivity.this, HandSummaryActivity.class); 
      handSummaryIntent.putExtra("RelPosString", WHATTOENTERHERE??) 
      startActivity(handSummaryIntent); 
     } 
    }); 
} 

但是我不知道如何檢索值/可變我的紗廠將它們放到按鈕/意圖方法?因爲如果我在Spinner方法中創建一個字符串,那麼我無法在Button方法中訪問它。

所以我覺得我有太多的方法?那麼有沒有辦法將數據從一種方法傳遞給另一種方法,還是我必須取消某些方法?什麼是最簡單的方法來設置它?

我也做了一個onItemSelected來做一些敬酒,它的工作。我可以使用OnItemSelected以某種方式創建變量或啓動數據傳輸到另一個活動?

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

    TextView myText = (TextView) view; 
    switch (parent.getId()) { 
     case R.id.spinner_relativePosition: 
      makeText(NewHandActivity.this, "Relative Position is " + myText.getText(), Toast.LENGTH_SHORT).show(); 
      break; 

     case R.id.spinner_absolutePosition: 
      makeText(NewHandActivity.this, "Absolute Position is " + myText.getText(), Toast.LENGTH_SHORT).show(); 
      break; 

我很新的編碼,我只是想不通的邏輯我是如何得到的微調方法,按鈕/ iniate方法和OnItemSelected方法一起交流變量的工作。如果有人能指引我正確的方向,將不勝感激。已經瀏覽了一天左右的互聯網找到答案,沒有成功。

+0

我會推薦在任何方法之外全局聲明'relativePositionSpinner'。然後你可以在你的活動中的任何地方使用它。 'String [] relativePositionArray = getResources()。getStringArray(R.array.relativePostion); Log.i(TAG,relativePositionArray [relativePositionSpinner.getSelectedItemPosition()]);' –

回答

0

我喜歡將代碼分離出來以創建每個微調器到自己的方法的想法。但是,如果您正在複製並粘貼整個方法並進行一些更改,則應該退一步考慮如何更輕鬆地完成此操作。通常,複製和粘貼後所做的更改會提示您應該爲方法添加一些參數。如果你做得正確,你可以只寫一個方法,然後複製並粘貼方法調用而不是整個方法,然後對參數進行適當的更改。

至於你的實際問題,你正在使這更復雜,不必要的。具體而言,您不需要在Spinner的任何setOnItemSelectedListener()。相反,該按鈕的OnClickListener應該從每個微調器中獲取所選項目並將其發送到意圖中的新活動。

+0

非常感謝提示。肯定會研究參數和方法調用。還將嘗試通過使用按鈕OnClickListener來查找方法。幾乎認爲我可能不需要setOn ... Listener,但不確定。 –

相關問題