2017-03-08 4 views
0

これは少し畳み込まれて聞こえるかもしれません。 私は1つのアクティビティに約15のスピナーを持ち、これらのスピナーごとに異なるメソッドを作成しました。次に、onCreateメソッドでメソッドを開始します。複数のスピナーのためのメソッドを作成しました - このデータを新しいアクティビティにどのように渡すのですか?

方法の例:

//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メソッドでStringを作成すると、Buttonメソッドでこれにアクセスできなくなるためです。

私はあまりにも多くの方法があるように感じる? 1つのメソッドから別のメソッドにデータを渡す方法はありますか、いくつかのメソッドを取り消す必要がありますか?これを設定する最も簡単な方法は何ですか?

私は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方法を把握し、交換変数することはできません。誰かが私を正しい方向に向けることができれば感謝します。すでに1日ほどインターネットを閲覧しているが、成功していない。

+0

'relativePositionSpinner'をどのメソッドの外にもグローバルに宣言することをお勧めします。次に、あなたの活動のどこでもこれを使うことができます。 String [] relativePositionArray = getResources()。getStringArray(R.array.relativePostion); Log.i(TAG、relativePositionArray [relativePositionSpinner.getSelectedItemPosition()]); ' –

答えて

0

私は、独自の方法で各スピナーを作成するコードを分けるというあなたの考えが好きです。ただし、メソッド全体をコピーして貼り付けていくつかの変更を加えている場合は、一歩前に戻って、それをもっと簡単に行う方法について考える必要があります。コピー&ペースト後に行う変更は、メソッドにいくつかのパラメータを追加する必要があることを示唆します。正しく行う場合は、1つのメソッドだけを記述し、メソッド全体ではなくメソッドをコピーして貼り付けてから、引数を適切に変更することができます。

実際の質問については、必要以上に複雑になっています。具体的には、SpinnerにはsetOnItemSelectedListener()は必要ありません。代わりに、ボタンのOnClickListenerは、各スピンナーから選択したアイテムを取得し、それをインテントの新しいアクティビティに送信するだけです。

+0

ヒントのおかげで多くの。間違いなくパラメータとメソッド呼び出しを調べます。また、ボタンOnClickListenerを操作することで方法を見つけようとします。ほとんど私はおそらくsetOn ... Listenerは必要ないと思ったが、確かではなかった。 –

関連する問題