如何通过单击选项卡1中的按钮切换到选项卡2?

时间:2015-11-19 01:56:19

标签: android android-fragments

我有三个选项卡,选项卡1中的片段列表,我想在选项卡2中将我单击的项目的位置发送到片段2,并将viewpager切换到tab2。我使用一个接口将位置发送到主活动,工作正常,调用片段2中的方法传递它的位置返回空指针异常,并且viewpager不切换。

MainActivity中的方法

<%= form_for @search do |s|%>

<div class="form-group">

  <%= check_box "enable", id:"enable", type:"checkbox" %>
  <%= s.label :type %>
  <%= s.select :type, options_for_select(type_array_search), {}, class:"form-control", id:"type_select", disabled: true %>

</div>

<script type="text/javascript">

$(function () {

  var $checkbox = $('#enable'),
      $select = $('#type_select');

  $checkbox.change(function (e) {
      $select.prop('disabled', !$checkbox.is(':checked'))
  });

});

</script>

<%= s.submit "Search", class:"btn btn-primary" %>

<% end %>

My FragmentPagerAdapter

@Override
public void respond(int i) {
    Toast.makeText(MainActivity.this,"INSIDE MAINACTIVITY AND i = "+i,Toast.LENGTH_SHORT).show();
    try {
       Bundle args = new Bundle();
        args.putInt("chapters",i);
        PhpFragment f2 = new PhpFragment();
        f2.setArguments(args);
        actionBar = getActionBar();
        actionBar.setSelectedNavigationItem(1);
        viewPager.setCurrentItem(1);

    }catch (Exception ex){
        Toast.makeText(MainActivity.this,"Error from MAIN = "+ ex.toString(),Toast.LENGTH_LONG).show();
    }
}

1 个答案:

答案 0 :(得分:0)

如果我按照你的问题......你应该调查它。

fragments communication in view pager

或者另一个技巧是..

您正在使用ViewPager,您可以利用它。您可以将标记添加到ViewPager,如下所示:

<强>活动:

pager.setTag("some text");  // pager is a ViewPager object

然后你可以通过ViewGroup在这样的片段中获取这些数据:

<强>片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view =  inflater.inflate(R.layout.fragment_main, container, false);

    String result = container.getTag().toString();
    // do something with the result

    return view;

您还可以将setTag()设置为片段中的容器。

另一个解决方案(到目前为止未提及)是通过SharedPreferences发送数据,但如果可能,我建议使用标记。