如何为不同的OnClick方法放置多个viewPager.setCurrentItem(位置)?

时间:2017-01-11 10:50:55

标签: android android-viewpager

让我们说活动A有5个按钮。每个按钮都会转到活动B,这是一个带有5个选项卡的选项卡式活动。当我点击button1时,我希望它带你到tab1,button2 = tab2,button3 = tab3等。我正在使用setCurrentItem,但它只适用于第一个和最后一个按钮。中间的其余部分将带您到tab1。 我需要什么代码,所以button2会把我带到tab2。我是否需要以及是否需要声明?非常感谢帮助。

ActivityA.java

  public void Button1(View view) {
    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab1", 0);  //2 or whatever you want
    startActivity(intent);
}

public void Button2(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab2", 1);  //2 or whatever you want
    startActivityForResult(intent, 0);


}

public void Button3(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab3", 2);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

public void Button4(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab4", 3);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

public void Button5(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab5", 4);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

ActivityB.java

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

    final int position1 = getIntent().getExtras().getInt("Tab1");

    final int position3 = getIntent().getExtras().getInt("Tab3");
    final int position2 = getIntent().getExtras().getInt("Tab2");
    final int position4 = getIntent().getExtras().getInt("Tab4");

    final int position5 = getIntent().getExtras().getInt("Tab5");


    PagerAdapter adapter = new PagerAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);

    {
        viewPager.setCurrentItem(position1);
    }
    {
        viewPager.setCurrentItem(position3);
    }
    {
        viewPager.setCurrentItem(position2);
    }

    {
        viewPager.setCurrentItem(position4);
    }

    {

        viewPager.setCurrentItem(position5);
    }

5 个答案:

答案 0 :(得分:0)

您将意图中的值放在不同的键中。改为使用相同的键:
活动1:

public void Button1(View view) {
    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("position", 0);  //2 or whatever you want
    startActivity(intent);
}

public void Button2(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("position", 1);  //2 or whatever you want
    startActivityForResult(intent, 0);
}

public void Button3(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("position", 2);  //2 or whatever you want
    startActivityForResult(intent, 0);
}

public void Button4(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("position", 3);  //2 or whatever you want
    startActivityForResult(intent, 0);
}

public void Button5(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("position", 4);  //2 or whatever you want
    startActivityForResult(intent, 0);
}

活性2:

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
PagerAdapter adapter = new PagerAdapter
        (getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(getIntent().getExtras().getInt("position",0));

答案 1 :(得分:0)

请不要使用 startActivityForResult 您只能使用一个键来传递意图中的标签索引,例如

    public void Button1(View view) {
        Intent intent = new Intent(view.getContext(), TabbedActivity.class);
        intent.putExtra("tabIndex", 0);  
        startActivity(intent);
    }
 public void Button2(View view) {
        Intent intent = new Intent(view.getContext(), TabbedActivity.class);
        intent.putExtra("tabIndex", 1);  
        startActivity(intent);
    }
 public void Button3(View view) {
        Intent intent = new Intent(view.getContext(), TabbedActivity.class);
        intent.putExtra("tabIndex", 2);  
        startActivity(intent);
    }
 public void Button4(View view) {
        Intent intent = new Intent(view.getContext(), TabbedActivity.class);
        intent.putExtra("tabIndex", 3);  
        startActivity(intent);
    }

在activityb get

final int position = getIntent().getExtras().getInt("tabIndex");
PagerAdapter adapter = new PagerAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
     viewPager.setCurrentItem(position);

答案 2 :(得分:0)

试试这个

public void Button1(View view) {
    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("tabPosition", 0);  //2 or whatever you want
    startActivity(intent);
}

public void Button2(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("tabPosition", 1);  //2 or whatever you want
    startActivityForResult(intent, 0);


}

public void Button3(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("tabPosition", 2);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

public void Button4(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("tabPosition", 3);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

public void Button5(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("tabPosition", 4);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

然后在你的视图分页器类

final int currentPosition = getIntent().getExtras().getInt("tabPosition");

像这样设置您的视图

PagerAdapter adapter = new PagerAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
    viewPager.setCurrentItem(currentPosition);

答案 3 :(得分:0)

You need to set only one tag in putextras. Like this
 public void Button1(View view) {
    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab", 0);  //2 or whatever you want
    startActivity(intent);
}

public void Button2(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab", 1);  //2 or whatever you want
    startActivityForResult(intent, 0);


}

public void Button3(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab", 2);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

public void Button4(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab", 3);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

public void Button5(View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("Tab", 4);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

然后在第二个活动中,您只需获得一个值。像这样:

最终ViewPager viewPager =(ViewPager)findViewById(R.id.pager);

final int position = getIntent().getExtras().getInt("Tab");



PagerAdapter adapter = new PagerAdapter
        (getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
    viewPager.setCurrentItem(position);

希望这会对你有所帮助。

答案 4 :(得分:0)

不是为每个ButtonView使用不同的键值,而是使用单个键并在位置变量中获取值,只需在单个整数变量中获取值,并使用该变量设置currentIten。

e.g。 活动A:

public void PcHealth (View view) {
    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("TabPosition", 0);  //2 or whatever you want
    startActivity(intent);
}

public void Wifi (View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("TabPosition", 1);  //2 or whatever you want
    startActivityForResult(intent, 0);


}

public void Misc (View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("TabPosition", 2);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

public void HowTo (View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("TabPosition", 3);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

public void Shortcut (View view) {

    Intent intent = new Intent(view.getContext(), TabbedActivity.class);
    intent.putExtra("TabPosition", 4);  //2 or whatever you want
    startActivityForResult(intent, 0);

}

ActivityB.java:

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

    final int position = getIntent().getExtras().getInt("TabPosition");


    PagerAdapter adapter = new PagerAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);

  viewPager.setCurrentItem(poisition);