안드로이드 개발 질문/답변
(글 수 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;
}
}
}
}


