안드로이드 개발 질문/답변
(글 수 45,052)
성적처리 앱을 만드는 중인데요 ....
DB 입출력되는 거 확인하고, 성적입력하는 액티비티 구성하고나서,
두 액티비티를 연결하려고 intent 로 값 넘겼더니 죽어버리네요 ㅜㅜ
풀 소스 올릴께요. 이유가 뭔지 모르겠어요 ㅜㅜ
Demo.java ::::: DB 입출력을 처리하고, 뷰로 출력해줌.
NewGrade.java ::::: 성적입력하는 액티비티
Demo.java
NewGrade.java
DB 입출력되는 거 확인하고, 성적입력하는 액티비티 구성하고나서,
두 액티비티를 연결하려고 intent 로 값 넘겼더니 죽어버리네요 ㅜㅜ
풀 소스 올릴께요. 이유가 뭔지 모르겠어요 ㅜㅜ
Demo.java ::::: DB 입출력을 처리하고, 뷰로 출력해줌.
NewGrade.java ::::: 성적입력하는 액티비티
Demo.java
C:\Users\mk\workspace\Demo\src\sm\mm\Demo.javaDB처리하는 액티비티
package sm.mm.Demo; import java.util.ArrayList; import java.util.HashMap; import android.app.ListActivity; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.SimpleAdapter; public class Demo extends ListActivity { /** Called when the activity is first created. */ private SQLiteDatabase db; Cursor mCursor; String mCode, mSubject,mUnit, mGrade; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //----------버튼부---------------- Button btnAdd=(Button)findViewById(R.id.call); btnAdd.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(Demo.this, NewGrade.class); startActivity(intent); } }); //---------------버튼부 끝--------- //------------인텐트 받아오기 -------- Bundle extras = getIntent().getExtras(); mCode = extras.getString("Code"); mSubject = extras.getString("Subject"); mUnit = extras.getString("Unit"); mGrade = extras.getString("Unit"); //----------- 데이터베이스 처리-------- db = openOrCreateDatabase("MyUserDB", MODE_PRIVATE, null); db.execSQL("drop table if exists users1"); db.execSQL("create table users1 (" + "_id integer primary key autoincrement, " + "Code text not null, " + "Subject text not null," + "Unit text not null," + "Grade text not null);"); // 데이터 1 삽입문 db.execSQL("insert into users1 " + " (Code, Subject, Unit, Grade)" + " values ('01635', '모바일프로그래밍', '3', 'A');"); db.execSQL("insert into users1 " + " (Code, Subject, Unit, Grade)" + " values ('"+mCode+"','"+mSubject+"','"+ mUnit+"','" +mGrade+"');"); //학점에 따라 쿼리? mCursor = db.query("users1", // String table new String[] { "Code", "Subject", "Unit", "Grade" }, // String[] // columns "unit > 1", // String selection null, // String[] selectionArgs null, // String groupBy null, // String having "_id", // String orderBy "5"); // String limit ArrayList<HashMap<String, String>> mList = new ArrayList<HashMap<String, String>>(); if (mCursor != null) { if (mCursor.moveToFirst()) { do { HashMap<String, String> item = new HashMap<String, String>(); for (int j = 0; j < mCursor.getColumnCount(); j++) { item .put(mCursor.getColumnName(j), mCursor .getString(j)); } mList.add(item); } while (mCursor.moveToNext()); } } SimpleAdapter adapter2 = new SimpleAdapter(this, mList, R.layout.excel, new String[] { "Code", "Subject", "Unit", "Grade" }, new int[] { R.id.text1, R.id.text2, R.id.text3, R.id.text4 }); setListAdapter(adapter2); if (db != null) { db.close(); } } }
NewGrade.java
C:\Users\mk\workspace\Demo\src\sm\mm\Demo\NewGrade.java
package sm.mm.Demo;
C:\Users\mk\workspace\Demo\src\sm\mm\Demo\NewGrade.java
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.RadioGroup; import android.widget.Spinner; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.RadioGroup.OnCheckedChangeListener; public class NewGrade extends Activity implements OnCheckedChangeListener { ArrayAdapter<CharSequence> adspin; String str, str2, mCode, mSubject, mUnit, mGrade; EditText mEdit1, mEdit2; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newgrade); //---------- 에디트 텍스트박스 설정 : 학수번호, 과목이름 ------ mEdit1 = (EditText)findViewById(R.id.in_code); mEdit2 = (EditText)findViewById(R.id.in_sub); //---------- 라디오 그룹 설정 : 이수학점 //이수학점(unit) - string RadioGroup unitgroup = (RadioGroup)findViewById(R.id.unitgroup); unitgroup.setOnCheckedChangeListener(this); //---------- 스피너 설정 ---------- //성적(grade) - string Spinner spin = (Spinner)findViewById(R.id.Spin_grade); spin.setPrompt("성적을 고르셈."); adspin = ArrayAdapter.createFromResource(this, R.array.grade, android.R.layout.simple_spinner_item); adspin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spin.setAdapter(adspin); spin.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // Toast.makeText(NewGrade.this,adspin.getItem(position) + "선택", // Toast.LENGTH_SHORT).show(); switch(position){ case 0: mGrade ="A"; break; case 1: mGrade ="B"; break; case 2: mGrade ="C"; break; case 3: mGrade ="D"; break; case 4: mGrade ="E"; break; } } public void onNothingSelected(AdapterView<?> parent) { } }); //---------인텐트간 통신----------- //인텐트에 저장된 값들을 Demo.java로 보냄 Button btnOK = (Button)findViewById(R.id.ok); btnOK.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String mCode, mSubject; //EditText 내용을 추출한다. mCode = mEdit1.getText().toString(); mSubject = mEdit2.getText().toString(); //extras 데이터를 담은 intent를 명시적으로 호출한다. Intent intent = new Intent(NewGrade.this, Demo.class); Bundle extras = new Bundle(); extras.putString("code", mCode); extras.putString("subject", mSubject); extras.putString("unit", mUnit); extras.putString("grade", mGrade); //intent에 extras를 담는다. intent.putExtras(extras); startActivity(intent); } }); /* Button btnOK=(Button)findViewById(R.id.ok); btnOK.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { //----------sender------------ Intent intent = new Intent(NewGrade.this, Demo.class); Bundle extras = new Bundle(); extras.putString("code", mCode); extras.putString("subject", mSubject); extras.putString("unit", mUnit); extras.putString("grade", mGrade); intent.putExtras(extras); startActivity(intent); //setResult(RESULT_OK,intent); //finish(); } }); */ Button btnCancel=(Button)findViewById(R.id.cancel); btnCancel.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { setResult(RESULT_CANCELED); finish(); } }); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (group.getId() == R.id.unitgroup) { switch (checkedId) { case R.id.unit_1: mUnit ="1"; break; case R.id.unit_2: mUnit="2"; break; case R.id.unit_3: mUnit="3"; break; } } } }