سؤال

أنا باستخدام فيوباجر لتنفيذ الضرب في بلدي الروبوت التطبيق.ومع ذلك ، أود أن يتم عرض الجزء السابق عندما يستخدم المستخدم زر الرجوع بدلا من إنهاء النشاط.هل هناك أي طريقة للقيام بذلك?شكرا سيباستيان

هل كانت مفيدة؟

المحلول

تجاوز وظيفة الخاص بك 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 لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top