안녕하세요? ^^* 

 

 

음 제가 지금 하고싶은건 터치 리스너를사용해서 왼쪽에서 오른쪽으로 스윙하면

  아래 빨간색으로 된 current변수(앞Activity에서 불러온 startblk을 current변수로 재저장, 현재 값을 기억하기위한..) 

current변수가 +1되면서 현 Activity를 재생성해,  current변수를 재 Display해주거나

오른쪽에서 왼쪽으로 스윙하면,

current변수가 -1이 되면서 현 Activity를 재생성해, current변수를 재 Display해주게 만드려고 합니다.

 

위의문제가 Ctrl+F11을 눌렀을때는 화면 전환이 되면서 Activity가 재생성이 되므로, 값이 바뀌는 것을확인했습니다만......

그래서

Activity재생성을 위한 Intent(주황색으로 주석처리된 부분)를 추가하니 에러가 떠서요..ㅠㅠㅠㅠ

NullPointerException이라는 에러가 뜹니다.. 

 

 

 

 어떻게 해야 current값을 저장해오면서, 현 Activity를 재 생성할수 있을까요??

 ______________________________________________________________________________

 

 

public class elec_normal_read_mblock_display9 extends Activity implements OnGestureListener{

 

     int current;

 

     private static final int SWIPE_MIN_DISTANCE = 120; 
     private static final int SWIPE_MAX_OFF_PATH = 250;
     private static final int SWIPE_THRESHOLD_VELOCITY = 200;

     private GestureDetector gestureScanner;

 

     public void onCreate(Bundle savedInstanceState) {

 

         super.onCreate(savedInstanceState);

 

         Intent intent = getIntent();
         int startblk = intent.getIntExtra("startblkvalue",0);  //이전 Activity에서 값 받아오기.

         gestureScanner = new GestureDetector(this);

 

         if(savedInstanceState == null){  //이게 처음으로 열린 Activity라면, startblk값을 current로 저장.

        current = startblk;
         
        }
        else{ //처음으로 열린 Activity가 아니라면, Activity 재 생성전에 저장된 current값을 불러옴.

         current = savedInstanceState.getInt("currentvalue");
        }
       

        setContentView(R.layout.elec_normal_read_mblock_display9);

 

         Button Sector_display = (Button)findViewById(R.id.button0); //Sector Display.
          Sector_display.setText(""+startblk);

 

 @Override

    public boolean onTouchEvent(MotionEvent me) {

        return gestureScanner.onTouchEvent(me);

    }

 

    public boolean onDown(MotionEvent e) {

        //viewA.setText("-" + "DOWN" + "-");

        return true;

    }

    

//왼쪽에서 오른쪽으로 드래그시,,,current값 +1,  오른쪽에서 왼쪽으로 드래그시. current값 -1

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

        try {

             if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
                  return false; 
   

             // right to left swipe 
              if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
                      && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
                 Toast.makeText(getApplicationContext(), "Left Swipe", 
                          Toast.LENGTH_SHORT).show(); 
                  current--;
                }
 
             // left to right swipe 
              else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
                      && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
                  Toast.makeText(getApplicationContext(), "Right Swipe", 
                          Toast.LENGTH_SHORT).show(); 
             
                 current++;

 
             }

         }
        
        catch (Exception e) {

        }


         //finish();
        // startActivity(new Intent(this, elec_normal_read_mblock_display9.class));
                                                                                  or
      //  Intent intent1= new Intent(this, elec_normal_read_mblock_display9.class);
       //startActivity(intent1);
       
       
       
        return true;

    }
 
 

    public void onLongPress(MotionEvent e) {

        Toast mToast = Toast.makeText(getApplicationContext(), "Long Press", Toast.LENGTH_SHORT);

        mToast.show();

    }

 

    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

       // viewA.setText("-" + "SCROLL" + "-");

        return true;

    }

 

    public void onShowPress(MotionEvent e) {

       // viewA.setText("-" + "SHOW PRESS" + "-");

    }

 

    public boolean onSingleTapUp(MotionEvent e) {

        Toast mToast = Toast.makeText(getApplicationContext(), "Single Tap", Toast.LENGTH_SHORT);

        mToast.show();

        return true;

    }
   

    public void onSaveInstanceState(Bundle outState){
     outState.putInt("currentvalue",current);            //Activity가 종료되기 전에 현재 current값을 저장.
    }

}