Проблема с переменной-членом действия при использовании кнопки назад - PullRequest
0 голосов
/ 27 октября 2011

У меня есть действие, которое показывает какой-то элемент из списка.

При перелистывании справа налево та же активность запускается со следующим продуктом, а при перелистывании слева направо я запускаю ту же операцию с предыдущим продуктом.

Я получаю позицию продукта из глобального массива, используя переменную-член position, которую уменьшаю при переходе к предыдущему продукту и увеличиваю при переходе к следующему продукту, и которую я передаю в качестве дополнительного в намерении.

Проблема в том, что при нажатии кнопки "назад" значение position остается таким же, как и в упражнении, из которого я иду. Я понимаю, что onResume вызывается вместо onCreate и что дополнительные не передаются, но position не является статическим, и я ожидаю, что оно сохранит свое значение в экземпляре действия. Почему это не так?

Спасибо

public class ProductHome extends Activity{  

    private int position;
    private Product product;

    private GestureDetector gestureDetector;
    View.OnTouchListener gestureListener;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.product_home);

        position = getIntent().getIntExtra("Position", -1);

        product = GlobalData.map_products.get(product_id);

        // swipe detector
        // left -> right: position++
        // right -> left: position--
        // then starts same activity again

        gestureDetector = new GestureDetector(new SRPGestureDetector());
        gestureListener = new View.OnTouchListener() 
        {
            public boolean onTouch(View v, MotionEvent event) 
            {
                if (gestureDetector.onTouchEvent(event)) 
                {
                    return true;
                }
                else{
                    return false;
                }
            }
        };

        RelativeLayout product_home = (RelativeLayout) findViewById(R.id.product_home);
        product_home.setOnTouchListener(gestureListener);
    }
}   

1 Ответ

0 голосов
/ 27 октября 2011

Это связано с режимом, в котором вы запускаете свою активность. Скорее всего, есть только один экземпляр вашей активности.

Вероятно, вам не следует запускать новую активность при смещении вправо, и, вероятно,не используйте кнопку «Назад», чтобы вернуться к предыдущему продукту, а скорее к списку, в котором вы, вероятно, пришли с

...