마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프로그램 디버깅좀 봐주세요.

0 추천

문제점을 찾지 못하여 질문드립니다.

 

질문 내용은 적립하기 액티비티에서 조건을 만족하면 적립금확인이라는 액티비티에 그 데이터가 전송됩니다.

 

그 후 에코샵이라는 액티비티에서 포인트를 사용하게 되면 적립금 확인 액티비티에서는

 

그 값이 제대로 나타나지 않습니다.

 

 

이미지를 보시는 바와 같이 5포인트가 적립된 화면입니다.

 

이후 에코샵이라는 액티비티에서 버튼을 눌러 사용하게 되면 많은 문제가 발생하네요

 

 

 

 

첫 번째 문제 10포인트가 적립됬다고 가정하에

5포인트 상품을 사용하게 되면 적립금 화면에서는 사용가능 포인트는 5포인트, 사용하신 포인트 5포인트

처음에는 이렇게 정상적으로 출력됩니다

 

다만 남은 포인트를 다시 사용할려고 5포인트 상품을 한번 더 누르면

 

사용가능 포인트 10포인트, 사용하신 포인트 0포인트 이렇게 출력이 바뀌네요

 

두번째 문제 10포인트 상품이나 15포인트 상품을 사용하게 되면 확인 액티비티에서는 아무런 값이 바뀌지 않습니다.

 

제 프로그램의 코딩중 무슨 문제점이 있는지 알려주시면 감사하겠습니다.

 

혹시 프리페런스 기능을 사용하여야 하면 어떻게 사용해야 하는건가요? 이것도 상세하게 알려주시면 감사하겠습니다.

 

아래부터 제가 코딩한 프로그램입니다.

 

첫번째로 적립하기 액티비티입니다.

<적립하기 액티비티 코드>

선언한 변수 

static int point;

if(toHexString(tagId).equals("EE77DC90")){
    Toast.makeText(this, "캔 5포인트가 적립되었습니다", Toast.LENGTH_SHORT).show();
    Intent get = new Intent(this,PointgetActivity.class);
       point = point + 5;
       get.putExtra("point", point);  //값 저장
       startActivityForResult(get,5);
       finish();
  }
  else if(toHexString(tagId).equals("3EABDA90")){
   Toast.makeText(this, "플라스틱 10포인트가 적립되었습니다", Toast.LENGTH_SHORT).show();
    Intent get = new Intent(this,PointgetActivity.class);
    point = point + 10;
    get.putExtra("point", point);  //값 저장
    startActivityForResult(get,5);
    finish();
  }
  else{
   Toast.makeText(this, "잘못된 태그입니다", Toast.LENGTH_SHORT).show();
  }
  }

 

 두번째로 적립금 확인 액티비티입니다.

 <적립금확인 액티비티>
      사용한 변수
     int getpoint=0;;
      int sale;
      static int accruepoint=0;;

      TextView get = (TextView) findViewById(R.id.gettext);
      getpoint = PointActivity.point;
      get.setText(String.format(getResources().getString(R.string.gettext),getpoint));
        
      TextView accrue = (TextView) findViewById(R.id.accruetext);
      accruepoint = getpoint - MallActivity.itempoint;
      accrue.setText(String.format(getResources().getString(R.string.accruetext),accruepoint));
       
      TextView use = (TextView) findViewById(R.id.usetext);
      sale = MallActivity.itempoint;
      use.setText(String.format(getResources().getString(R.string.usetext),sale));

 

 마지막으로 사용하기 액티비티입니다.

 

사용한 변수
static int itempoint;

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mall);
        
        Button item1 = (Button)findViewById(R.id.item1);
        item1.setOnClickListener(new View.OnClickListener() {
   @Override
     public void onClick(View v) {
      if(PointgetActivity.accruepoint >= 5){
       itempoint = PointgetActivity.accruepoint - 5;
       Toast.makeText(getApplicationContext(),"재학증명서 무료이용권을 사용하셨습니다.",Toast.LENGTH_SHORT).show();
       return;
            }
      else{
       Toast.makeText(getApplicationContext(),"포인트가 부족합니다.",Toast.LENGTH_SHORT).show();
       }
   }
        });
        
        
        //졸업증명서 아이템
        Button item2 = (Button)findViewById(R.id.item2);
        item2.setOnClickListener(new View.OnClickListener() {

  @Override
     public void onClick(View v) {
      if(PointgetActivity.accruepoint >= 10){
        itempoint = PointgetActivity.accruepoint - 10;
        Toast.makeText(getApplicationContext(),"졸업증명서 무료이용권을 사용하셨습니다.",Toast.LENGTH_SHORT).show();
        return;
           }
      else{
        Toast.makeText(getApplicationContext(),"포인트가 부족합니다.",Toast.LENGTH_SHORT).show();
       }
    
   }
        });
        //성적증명서 아이템
       Button item3 = (Button)findViewById(R.id.item3);
       item3.setOnClickListener(new View.OnClickListener() {

  @Override
    public void onClick(View v) {
      if(PointgetActivity.accruepoint >= 15){
       itempoint = PointgetActivity.accruepoint - 15;
       Toast.makeText(getApplicationContext(),"성적증명서 무료이용권을 사용하셨습니다.",Toast.LENGTH_SHORT).show();
       return;
           }
      else{
       Toast.makeText(getApplicationContext(),"포인트가 부족합니다.",Toast.LENGTH_SHORT).show();
       }
   }
        });
      
    }    

 

많은 도움 주시면 감사하겠습니다.

 

김희구 (440 포인트) 님이 2014년 8월 5일 질문

1개의 답변

0 추천
값을 액티비티에서 계산하지 마시고 preference 같은 곳에 저장해서 쓰세요.
쎄미 (162,410 포인트) 님이 2014년 8월 6일 답변
...