استخدام باكستاك مع فيوباجر
-
13-12-2019 - |
سؤال
أنا باستخدام فيوباجر لتنفيذ الضرب في بلدي الروبوت التطبيق.ومع ذلك ، أود أن يتم عرض الجزء السابق عندما يستخدم المستخدم زر الرجوع بدلا من إنهاء النشاط.هل هناك أي طريقة للقيام بذلك?شكرا سيباستيان
المحلول
تجاوز وظيفة الخاص بك Activity
:
public class Activity extends Activity
{
@Override
public void onBackPressed()
{
// do stuff
myFragment.onBackPressed();
}
}
public class Fragment extends Fragment
{
public void onBackPressed()
{
// do stuff
}
}
نصائح أخرى
كان لدي مشكلة مماثلة ، هذه هي الطريقة التي حلها.كان لي فيوباجر مع 6 شظايا وأراد أن تتبع تاريخ الصفحة وتكون قادرة على استخدام زر العودة للتنقل إلى الوراء في التاريخ.أنا خلق java.util.Stack<Integer>
كائن ، إضافة أرقام جزء إليها (إلا عند استخدام زر الرجوع ، انظر أدناه) ، وتجاوز onBackPressed()
لجعله البوب الجزء الأخير ينظر بدلا من استخدام المكدس الخلفي ، عندما بلدي كومة التاريخ ليست فارغة.
تريد تجنب دفع العناصر على المكدس عند الضغط على زر الرجوع ، وإلا فسوف تتعثر بين جزأين إذا واصلت استخدام زر الرجوع ، بدلا من الخروج في النهاية.
الرمز الخاص بي:
MyAdapter mAdapter;
ViewPager mPager;
Stack<Integer> pageHistory;
int currentPage;
boolean saveToHistory;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.container);
mPager.setAdapter(mAdapter);
mPager.setOffscreenPageLimit(5);
pageHistory = new Stack<Integer>();
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
if(saveToHistory)
pageHistory.push(Integer.valueOf(currentPage));
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
saveToHistory = true;
}
@Override
public void onBackPressed() {
if(pageHistory.empty())
super.onBackPressed();
else {
saveToHistory = false;
mPager.setCurrentItem(pageHistory.pop().intValue());
saveToHistory = true;
}
};
تجاوزت الطريقة التالية في نشاط جزء يجب حل مشكلتك.
giveacodicetagpre.لدي نفس المشكلة وأتابع هذه الخطوة ( تحرير إجابتي --- بالتأكيد العمل بالنسبة لي، أعطها تجربة )
في النشاط الرئيسي حيث يوجد 3 شظية في ViewPager أقوم بإنشاء مكدس ودفع وبيانات البوب.
giveacodicetagpre.وفي onbackpressed في النشاط،
giveacodicetagpre.آمل أن يساعد ذلك أو msg لي.