- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在选择特定选项卡时启动一个 Activity ,但当我从该 Activity 返回时,我希望显示前一个选项卡而不是我单击的选项卡。就像您在 Instagram 上点击加号按钮一样。
像这样:
默认 fragment 1/标签 1
转到 fragment 5/Tab 5
点击tab 3,弹出 Activity
返回,查看 Fragment 5/Tab 5
现在,我将上次访问的选项卡索引存储在一个变量中,然后当单击选项卡 3 时,它只会转到上次访问的选项卡。
tabLayout.setOnTabSelectedListener(
new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//super.onTabSelected(tab); -- Should keep this or leave it commented out?
int pos = tab.getPosition();
switch (pos) {
case 0:
viewPager.setCurrentItem(tab.getPosition(), false);
getSupportActionBar().setTitle("Home");
pre_pos = pos;
pre_title = "Home";
break;
case 1:
viewPager.setCurrentItem(tab.getPosition(), false);
getSupportActionBar().setTitle("Trending");
pre_pos = pos;
pre_title = "Trending";
break;
case 2:
viewPager.setCurrentItem(pre_pos, false);
getSupportActionBar().setTitle(pre_title);
Intent intent = new Intent(MainActivity.this, NewEvent_Activity.class);
startActivity(intent);
Toast.makeText(getApplicationContext(),
"Curr: "+ viewPager.getCurrentItem()+
" Prev: " + pre_pos +
" Clicked: " +tab.getPosition(),
Toast.LENGTH_SHORT).show();
break;
case 3:
viewPager.setCurrentItem(tab.getPosition(), false);
getSupportActionBar().setTitle("Notifications");
pre_pos = pos;
pre_title = "Notifications";
break;
case 4:
viewPager.setCurrentItem(tab.getPosition(), false);
getSupportActionBar().setTitle("Profile");
pre_pos = pos;
pre_title = "Profile";
break;
}
}
});
在 ViwPager.java
中,它在调用 setCurrentItem()
时调用此函数
void setCurrentItemInternal(int item, boolean smoothScroll, boolean always, int velocity) {
if (mAdapter == null || mAdapter.getCount() <= 0) {
setScrollingCacheEnabled(false);
return;
}
//I think my problem lies in the following line (mCurItem == item)
if (!always && mCurItem == item && mItems.size() != 0) {
setScrollingCacheEnabled(false);
return;
}
if (item < 0) {
item = 0;
} else if (item >= mAdapter.getCount()) {
item = mAdapter.getCount() - 1;
}
final int pageLimit = mOffscreenPageLimit;
if (item > (mCurItem + pageLimit) || item < (mCurItem - pageLimit)) {
// We are doing a jump by more than one page. To avoid
// glitches, we want to keep all current pages in the view
// until the scroll ends.
for (int i = 0; i < mItems.size(); i++) {
mItems.get(i).scrolling = true;
}
}
final boolean dispatchSelected = mCurItem != item;
if (mFirstLayout) {
// We don't have any idea how big we are yet and shouldn't have any pages either.
// Just set things up and let the pending layout handle things.
mCurItem = item;
if (dispatchSelected) {
dispatchOnPageSelected(item);
}
requestLayout();
} else {
populate(item);
scrollToItem(item, smoothScroll, velocity, dispatchSelected);
}
}
我认为这是我的问题所在,但我无法对其进行编辑。有什么建议吗?
谢谢。
最佳答案
在 Activity 上实现 ViewPager.OnPageChangeListener。在 viewpager 上设置监听器
view_pager.setOnPageChangeListener(this);
在 OnPageSelected() 方法中:
@Override
public void onPageSelected(int position) {
if (position == 3) {
startActivity(new Intent(this,activity.class));
}
}
覆盖 Activity 的 onResume 方法并写入:
@Override
public void onResume() {
super.onResume();
view_pager.setCurrentItem(0);
}
关于android - ViewPager - 从 setOnTabSelectedListener 启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44458943/
我总是看到以下代码的划线 setOnTabSelectedListener viewPager.setAdapter(adapter); viewPager.addOnPageChangeListen
我试图在选择或滑动 viewPager 时突出显示选项卡图标。为此,我使用了 'tabLayout.setOnTabSelectedListener()'。但是当我滑动标签时它不会突出显示,但是当我按
假设我有 MainActivity 类,其中 TabLayout 和 ViewPager 被初始化为对应的 4 个页面。 MainActivity.class public class MainAct
我试图在选择特定选项卡时启动一个 Activity ,但当我从该 Activity 返回时,我希望显示前一个选项卡而不是我单击的选项卡。就像您在 Instagram 上点击加号按钮一样。 像这样: 默
使用 android.support:design:23.0.0。 setOnTabSelectedListener 仅在我单击选项卡时触发,但在我滑动它时不会被 ViewPager 触发。 举个例子
我正在使用一个包含扩展 TabLayout 类的库。我正在尝试使用最新的支持库进行构建: implementation 'com.android.support:appcompat-v7:28.0.0
我是一名优秀的程序员,十分优秀!