2016-04-03 12 views
0

これは私を狂わせてしまいます。私はspinnerを使用してfragmentsを切り替えようとしていますが、私の間違いがどこにあるかわかりません。 spinnerのアイテムの1つをクリックすると、それは常にのフラグメント3のコンテンツを表示します。他のアイテムは表示されません。ツールバーのスピナーを使ってフラグメントを切り替える

私は今何時間もインターネットを閲覧しましたが、私がアンドロイドプログラミングを初めて利用しているため、私の問題の解決策を見つけることができませんでした。

ありがとうございました!

MainActivity.java

// Setup spinner 
     Spinner spinner = (Spinner) findViewById(R.id.spinner); 
     spinner.setAdapter(new MyAdapter(
       toolbar.getContext(), 
       new String[]{ 
         "Fragment 1", 
         "Fragment 2", 
         "Fragment 3" 
       })); 

     spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       // When the given dropdown item is selected, show its contents in the 
       // container view. 
       switch (position) { 
        case 0: 
         getSupportFragmentManager().beginTransaction() 
           .replace(R.id.container, Fragment1.newInstance()).commit(); 
        case 1: 
         getSupportFragmentManager().beginTransaction() 
           .replace(R.id.container, Fragment2.newInstance()).commit(); 
        default: 
         getSupportFragmentManager().beginTransaction() 
           .replace(R.id.container, Fragment3.newInstance()).commit(); 
       } 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 

Fragment1.java

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class Fragment1Fragment extends Fragment { 

    public static Fragment1Fragment newInstance() { 
     Fragment1Fragment fragment = new Fragment1Fragment(); 
     return fragment; 
    } 

    public Fragment1Fragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_fragment1, container, false); 
     return rootView; 
    } 
} 

答えて

1

親愛なる、

switch (position) { 
         case 0: 
          getSupportFragmentManager().beginTransaction() 
            .replace(R.id.container, Fragment1.newInstance()).commit(); 

          break; 
         case 1: 
          getSupportFragmentManager().beginTransaction() 
            .replace(R.id.container, Fragment2.newInstance()).commit(); 
          break; 
         default: 
          getSupportFragmentManager().beginTransaction() 
            .replace(R.id.container, Fragment3.newInstance()).commit(); 
          break; 
        } 

休憩なしステートメントを実行すると、3行すべてが実行されます。だから第3の断片。

+0

異なるリサイクルビューを異なるフラグメントに表示したいのですが、これは正しいアプローチですか? – Ron

+0

あなたはここでトランザクションをしています...それぞれのフラグメントが何をしているのか、そのフラグメント自身のビジネスです。 – theJango

関連する問題