Android アプリでスワイプを実装するために ViewPager を使用しています。ただし、ユーザーがアクティビティを終了する代わりに戻るボタンを使用したときに、前のフラグメントを表示したいと思います。それを行う方法はありますか?ありがとうセバスチャン
9806 次
6 に答える
5
の機能をオーバーライドしますActivity
:
public class Activity extends Activity
{
@Override
public void onBackPressed()
{
// do stuff
myFragment.onBackPressed();
}
}
public class Fragment extends Fragment
{
public void onBackPressed()
{
// do stuff
}
}
于 2012-10-03T16:40:27.930 に答える
1
私は同じ問題を抱えており、この手順に従います(回答を編集しました---確かにうまくいきます、試してみてください)
ビューページャーに 3 つのフラグメントがあるメイン アクティビティで、スタックを作成し、データをプッシュおよびポップします。
private Stack<Integer> stackkk;
private ViewPager mPager;
private int tabPosition = 0;
mTabLayout.setupWithViewPager(mPager);
mPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
tabPosition = tab.getPosition();
mPager.setCurrentItem(tab.getPosition());
// here i have add the data into the stack in each tab click, as at first it will always be null so i add 0 position
if (stackkk.empty())
stackkk.push(0);
if (stackkk.contains(tabPosition)) {
stackkk.remove(stackkk.indexOf(tabPosition));
stackkk.push(tabPosition);
} else {
stackkk.push(tabPosition);
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
tabPositionUnselected = tab.getPosition();
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
onBackPressed in アクティビティでは、
//OnbackPress i have first taken out the last one as it already and
//selected by poping it out then only set to the pager.
@Override
public void onBackPressed() {
if (stackkk.size() > 1) {
stackkk.pop();
mPager.setCurrentItem(stackkk.lastElement());
} else {
}
}
これが助けになるか、私にメッセージを送ってくれることを願っています。
于 2015-10-09T01:34:44.150 に答える