티스토리 뷰
Activity 두개를 이용하여 입력화면과 출력 화면을 만들고, 두 개의 액티비티 사이에서 데이터를 전달하는 계산기 구현
입력화면
첫번째 숫자와 두번째 숫자를 입력하고 연산자 버튼을 누르면 결과 계산 화면으로 이동합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | package com.example.jeon.myapplication; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private EditText numOne; private EditText numTwo; private Button plusBtn; private Button mulBtn; private TextView tvResult; private long pressedTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); numOne = (EditText) findViewById(R.id.numOne); numTwo = (EditText) findViewById(R.id.numTwo); plusBtn = (Button) findViewById(R.id.plusBtn); mulBtn = (Button) findViewById(R.id.mulBtn); tvResult = (TextView) findViewById(R.id.tvResult); tvResult.setText("계산기 실행중입니다."); View.OnClickListener onClickListener = new View.OnClickListener(){ @Override public void onClick(View v) { String firstNum = numOne.getText().toString(); String secondNum = numTwo.getText().toString(); String operator = (String) ((Button)v).getText(); if( numOne.getText().length() == 0 || numTwo.getText().length() == 0 ){ Toast.makeText(MainActivity.this, "숫자를 입력해주세요.", Toast.LENGTH_LONG).show(); return; } Intent intent = new Intent(v.getContext(), SubActivity.class); intent.putExtra("firstNum", firstNum); intent.putExtra("secondNum", secondNum); intent.putExtra("operator", operator); startActivityForResult(intent, 1000); } }; plusBtn.setOnClickListener(onClickListener); mulBtn.setOnClickListener(onClickListener); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == 1000 && resultCode == 8) { tvResult.setText(data.getStringExtra("operator") + " 계산의 결과값 : " + data.getStringExtra("resultText")); } } @Override public void onBackPressed() { if(pressedTime == 0) { Toast.makeText(MainActivity.this, "한번 더 누르면 종료됩니다!", Toast.LENGTH_SHORT).show(); pressedTime = System.currentTimeMillis(); } else { long seconds = System.currentTimeMillis() - pressedTime; if ( seconds < 2000 ) { Toast.makeText(MainActivity.this, "종료합니다!", Toast.LENGTH_SHORT).show(); finish(); } else { Toast.makeText(MainActivity.this, "한번 더 누르면 종료됩니다!", Toast.LENGTH_SHORT).show(); pressedTime = System.currentTimeMillis(); } } } } | cs |
데이터를 전달하기 위하여 Intent 를 사용한다.
intent.putExtra("이름" , 값 ); 을 사용하여 값을 앞의 이름으로 전달한다. 그러면 다음 Activity 에서 이름을 사용하여 받을 수 있다.
결과화면
입력 Activity 에서 연산자를 누르면 보여지는 화면으로 연산의 결과를 화면에 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | package com.example.jeon.myapplication; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class SubActivity extends AppCompatActivity { private TextView tvResult; private Button okBtn; private String operator; private int firstNum; private int secondNum; private int result; private String resultText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); tvResult = (TextView) findViewById(R.id.tvResult); okBtn = (Button) findViewById(R.id.okBtn); Intent intent = getIntent(); operator = intent.getStringExtra("operator"); firstNum = Integer.parseInt(intent.getStringExtra("firstNum")); secondNum = Integer.parseInt(intent.getStringExtra("secondNum")); if ( operator.equals("+")){ result = firstNum + secondNum; } else if( operator.equals("*")){ result = firstNum * secondNum; } resultText = firstNum + " " + operator + " " + secondNum + " = " + result; tvResult.setText(resultText); okBtn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent reIntent = new Intent(); reIntent.putExtra("resultText", resultText); reIntent.putExtra("operator", operator); setResult(8, reIntent); finish(); } }); } } | cs |
입력화면
결과화면
'Android' 카테고리의 다른 글
[Android] AlertDialog 를 이용한 알림창 (0) | 2016.07.21 |
---|---|
[Android] onBackPressed 뒤로가기 버튼 처리 (0) | 2016.07.21 |
[Android] startActivityForResult (0) | 2016.07.21 |
[Android] 안드로이드 스튜디오 단축키 (0) | 2016.07.11 |
[Android] 안드로이드 스튜디오 설치 (0) | 2016.07.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- AlertDialog.Builder
- sort
- jsp
- onPostExecute
- table
- Spring
- 이클립스
- algorithm
- 안드로이드 스튜디오
- 자바
- order by
- RequestMapping
- restfb
- 예외처리
- java
- indexOf
- servlet
- DP
- INSERT
- controller
- mybatis
- Baekjoon Online Judege
- boj
- onBackPressed
- BFS
- DFS
- 안드로이드 비콘
- maven
- list
- REDIRECT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함