아하
  • 토픽

  • 스파링

  • 잉크

  • 미션


진기한사자111

진기한사자111

안드로이드 스튜디오 포인트 적립 시스템을 만들고 싶습니다.

1. 버튼을 클릭하면 포인트를 적립하고 누적이 되어 액티비티에 띄워주고 싶습니다.

int i; int point = i; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); tv_point = findViewById(R.id.tv_point); tv_nickname = findViewById(R.id.tv_nickname); btn_button1 = findViewById(R.id.btn_button1); btn_button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv_point.setText(String.valueOf(point+10)); } }); btn_button2 = findViewById(R.id.btn_button2); btn_button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv_point.setText(String.valueOf(point+20)); } }); tv_point.setText(String.valueOf(point));

이 코드가 뭔가 이상한건 느끼고 있는데 어떻게 해야 포인트가 누적이되고 화면에 띄워지는지 모르겠네요..

인터넷으로 찾아봐도 포인트적립에관한 정보는 별로없더라고요. 아니면 제가 못찾는건지..

2. 어플을 껐다가 키면 데이터가 날아가는데 데이터베이스에서 데이터를 출력해서 표시해야되나요?
아니면 생명주기를 하면 되는건가요? ((생명주기 vs 데이터 베이스 데이터 출력)) -포인트 시스템 기준-

3. 만약 데이터베이스에서 데이터를 출력해야되면 어떻게 하는건가요? 저는 공부하는 차원에서 구글의 파이어베이스를 쓰고있습니다.

4. 포인트 적립 예제를 알 수 있을까요?

포인트 적립 예제 코드를 대충이라도 써주시면 감사하겠습니다. (간단할줄알았는데 이것때문에 공부하면서 4개월동안 아무것도 못함 ㅜㅜ)

    4개의 답변이 있어요!

    • 검은밀잠자리283

      검은밀잠자리283

      1. 버튼을 클릭하면 포인트를 적립하고 누적이 되어 액티비티에 띄워주고 싶습니다.

      -> tv_point.setText(String.valueOf(point+10));

      -> tv_point.setText(String.valueOf(point+20));
      코드가 포인트를 적립 및 누적을 하는 것 같습니다.

      2. 어플을 껐다가 키면 데이터가 날아가는데 데이터베이스에서 데이터를 출력해서 표시해야되나요?
      -> 데이터베이스 뿐만 아니라 서버에서 저장을 해야 의미가 있지 않을까 합니다

      3. 만약 데이터베이스에서 데이터를 출력해야되면 어떻게 하는건가요? 저는 공부하는 차원에서 구글의 파이어베이스를 쓰고있습니다.

      -> 사용자를 구분해서 해당 사용자의 포인트를 파이어베이스에서 가져와서 출력해야합니다.

      4. 포인트 적립 예제를 알 수 있을까요?

      -> 파이어베이스를 기반으로하는 메모장을 먼저 만들어보고 이해하면 어렵지 않을것 같습니다.

      유튜브에 해당 예제를 만드는 강의들이 있습니다.

    • class에 전역변수로 포인트를 누적시킨다 하더라도, 앱이 task에서 삭제되면 변수값은 사라지게됩니다.

      앱이 종료되더라도 데이터가 유지될수있는 data structure를 사용해서 값을 유지시키는 방법이있습니다.

      preference 라고 앱 내부에서 사용할수있는 방법이있고,

      저장해야하는 data가 많아진다면, database 를 구축해서 앱자체의 db파일을 생성하여 사용하면될것같습니다

    • 안녕하세요. 포인트 적립 시스템을 만드시고 싶어서 많은 고민을 하셨군요..

      처음부터 포인트 적립 시스템을 만들기 보다는 예제를 하나씩 해보시면 프로그램 하시면

      도움이 될 듯합니다. 아래 firebase에서 제공하는 사이트에 접속하셔서

      https://firebase.google.com/docs/firestore/quickstart?authuser=0

      일단 간단한 입력, 수정, 삭제 기능 부터 구현 해보시고

      기능 추가 하는 형태로 포인트 적립 시스템을 만들어 보시면 될 것 같습니다.

      단계적으로 개발하면서 나오는 결과를 확인해야

      재미를 느끼며 코딩하실 수 있을 것 같습니다.

      답변이 도움 됐으면 좋겠습니다.

      감사합니다.

    • 1.소스코드중

      i 변수는 지우시고, point 변수는 초기값을 0으로 줍니다. int point = 0;

      onClick 부분에 tv_point.setText(String.valueOf(point+10));

      이 부분은 point 변수에 10을 더해서 문자로 치환해서 텍스트박스에 출력하는 부분인데 버튼 클릭시 변수가 추가가 되는 연산담당 코드가 없습니다.

      point += 10;

      tv_point.setText(String.valueOf(point));

      2번째 버튼도 비슷하게 바꿔주시면 됩니다.

      2. 내부 데이터베이스(db) 나 서버를 이용하셔서 앱 실행시 db서 포인트값 불러오고 종료시 db에 포인트값을 저장하는 소스코드를 작성하셔야합니다.(여기서 생명주기참고 하셔서 소스코드 작성하셔야 합니다)

      3.앱 실행시 onCreate부분에서 db랑 연동해서 해당 포인트값을 가져온뒤 point 변수에 집어 넣어주면 됩니다. db연동 부분은 구글에 검색하세요.

      4. 1번과 동일함