2017-09-17 3 views
1

私は、すべてのアクティビティ内にスピナーを含む4つのアクティビティを持っています。このスピンナーには、3から のストリングデータ(ドロップダウン選択)が含まれています。私はスピナーのリストからデータxを選択してボタンをクリックしました。選択されたデータはxとして2番目のアクティビティスピナーになければなりません。 解決せずにいくつかの解を読んでいます。私はここでそれを解決したいと考えています。これは、スピナーのための私のコードで、どこで意思コードにアクティビティ間でスピナー選択を渡す

public class Page1 extends AppCompatActivity { 
    Spinner spinner; 
    ArrayAdapter adapter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_page1); 

    spinner = (Spinner)findViewById(R.id.spinner); 
    adapter = ArrayAdapter.createFromResource(this,R.array.film_type,android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

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

      Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_LONG).show(); 

      switch (position) 
      {case 0: 
       btn[0] = (FloatingTextButton) findViewById(R.id.btn); 
       btn[0].setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         try { 
          double thick = Double.valueOf(editText1.getText().toString()); 
          double width = Double.valueOf(editText2.getText().toString()); 
        } 
       }); 
       break; 
       case 1: 
        btn[0] = (FloatingTextButton) findViewById(R.id.btn); 
        btn[0].setOnClickListener(new View.OnClickListener() { 
         public void onClick(View v) { 
          try { 

          } catch (NumberFormatException e) { 
           //not a double 
          } 
         } 
        }); 
        break; 
      } 
     } 
    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { 
    } 
}); 

答えて

0

まず文字列変数にスピナーから選択されたデータの位置を保存

int positionOfSelectedDataFromSpinner; 

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

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

次にon buttonクリックすると、私は、これはあなたの問題を解決するため、私の考える

spinner.setSelection(positionToShowToSpinner); 

をスピナーする位置を設定し、別の活動にgetIntentからputExtra

Intent i = new Intent (this, activity2.class); 

i.putExtra("position", positionOfSelectedDataFromSpinner); 
startActivity(i); 

GET int型で別の活動に

Intent intent = getIntent(); 
int positionToShowToSpinner = intent.getStringExtra("position"); 

を意図を送ります。

+0

あなたは整数として置くことができます。 https://stackoverflow.com/questions/7074097/how-to-pass-integer-from-one-activity-to-another –

+0

うん、....ヒントをありがとう.. @ M.Mavini – UltimateDevil

+0

ありがとう私はやったあなたのコードは次のようになります: 1-finalint [] positionOfSelectedDataFromSpinner = new int [1]; 2 positionOfSelectedDataFromSpinner [0] = position; 2番目のアクティビティで取得する 3インテントのインテント= getIntent(); int positionToShowToSpinner = intent.getIntExtra( "position"、0); 4- spinner.setSelection(positionToShowToSpinner); –

0

を置くためにあなたがこのよう

String selectedItem=spinner1.getSelectedItem().toString(); 

でそれを行うことができますし、Intent

を使用して渡すことができます Stringこと
+0

エクストラを整数として配置できます。 httft://stackoverflow.com/questions/7074097/how-to-pass-integer-from-one-activity-to-another –

0

これは私が考えることができる最も無痛な方法です: 新しいクラスまたは既存のクラスの静的メンバーを作成しますが、2番目のソリューションはコードを理解しづらいものにします。

public class SpinnerPosHolder{ 
    public static int poition; 
} 

し、それらのすべての4:それを使用するための

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
SpinnerPosHolder.position = spinner.getSelectedItemPosition(); 

:、

spinner.setSelection(SpinnerPosHolder.position) 
関連する問題