2016-05-15 3 views
4

これは自分のアクティビティでonCreate関数の実装です。私はタブを動的に作成する必要があります。ここでは簡単のために2つのタブを作った。TabLayoutでアクティビティのタブクリックイベントを取得する方法

public class ActivityProductList extends AppCompatActivity { 

    private android.support.v7.widget.SearchView searchView = null; 
    private RecyclerView recyclerView; 
    MyAdapter adapter; 
    List<ParentListItem> parentListItems = new ArrayList<>(); 
    List<ParentListItem> originalProductList = new ArrayList<>(); 
    String query = null; 
    int categoryId = 0; 

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

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("PRODUCTS"); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     //ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); 
     //setupViewPager(viewPager); 
     //tabLayout.setupWithViewPager(viewPager); 
     //viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

     searchView = (android.support.v7.widget.SearchView) findViewById(R.id.searchView); 
     searchView.setIconified(false); 
     searchView.onActionViewExpanded(); 
     searchView.clearFocus(); 
     searchView.setOnQueryTextListener(new android.support.v7.widget.SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       if (adapter != null) 
        filterData(query); 
       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String query) { 
       if (adapter != null) 
        filterData(query); 
       return false; 
      } 
     }); 

    } 
} 

タブをクリックすると編集テキストの値を変更したいと思います。そのeditTextは同じアクティビティです。

アクティビティのタブクリックイベントを取得するにはどうすればよいですか?

+0

['OnTabSelectedListener']について(https://developer.android.com/reference/android/support/design/widget/TabLayout.OnTabSelectedListener.html)? –

答えて

12

あなたはこの

tabLayout.addOnTabSelectedListener(new OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(Tab tab) { 
      switch(tab.getPosition()) { 
       case 0: 
        .... 
      } 
     } 

P.S.ためonTabSelectedリスナーを使用することができますsetOnTabSelectedListenerは廃止され、何がしたいことは、タブが毎回タブが選択されていないクリックされたとき、あなたはそれぞれのタブにカスタムビューを使用することができている場合は代わりに

0

addOnTabSelectedListenerを使用してくださいとハンドルよりも、このようなそれぞれのビューをクリックしてください:

どう
for (int i = 0; i < tabLayout.getTabCount(); i++) { 
    final TabLayout.Tab tab = tabLayout.getTabAt(i); 
    final View tabView = LayoutInflater.from(this).inflate(
      R.layout.item_tab, (ViewGroup) tab.getCustomView(), false); 
    tabLayout.setCustomView(tabView); 

    final TextView customView = (TextView) tab.getCustomView(); 
    customView.setText(mAdapter.getPageTitle(i)); 
    final int index = i; 
    customView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (tabLayout.getSelectedTabPosition() == index) { 
       // change edittext value 
      } else { 
       tab.select(); 
      } 
     } 
    }); 
} 
+0

タブ内でタブのクリックを処理する別の方法は、onTabSelectedListenerのonTabReselectedメソッドをオーバーライドすることです。 – urgentx

関連する問題