让我们说活动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);
}
答案 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);