다른 사람과 하나의 프로그램을 코딩중인데.. 제가 담당한 부분을 합치기 전까진 잘 돌아가던 코드가, 수정을 하니까 동작을하지 않습니다.. 오류가 난 부분을 보니
R.layout.activity_main
R.id.text
처럼 R로 현재 액티비티(?, 제가 이게 정확히 지칭하는 부분이 뭔지 잘 기억이 나지 않아서..)를 지정하는 부분에서 오류가 나더라구요..
메인 액티비티는 아래와 같고, 제가 작업한 부분은 가장 마지막 부분인 서버 업로드 부분입니다.
package com.example.ssu.mohae1_03;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
private static Context c;
//
TextView text;
// 팝업에서 선택한 활동 저장 변수
int mSelect = 0;
int timer;
MyCalendar myCalendar;
ActivityDBHelper mohaeDB;
DBcontroler controler;
Table activity;
Thread thread;
Alarm alarm;
Handler alarmHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
c = this;
text = (TextView) findViewById(R.id.text);
final AlertDialog.Builder ab = new AlertDialog.Builder(this);
// 달력생성
myCalendar = new MyCalendar();
myCalendar.getDate();
// activity 테이블
activity = new Table();
// DB 생성
mohaeDB = new ActivityDBHelper(this, "MohaeDB.db", null, 4);
controler = new DBcontroler(mohaeDB);
// 알람을 보내는 쓰래드 생성
alarm = new Alarm(handler);
thread = new Thread(alarm);
thread.start();
// get alarm handler
alarmHandler = alarm.getAlarmHandler();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); //네트워크 사용 정책 추가
StrictMode.setThreadPolicy(policy);
}
// 시간 설정하기
public void timesetOnClick(View v) {
//
Log.d("mydebug", "timeset click");
final LinearLayout linear = (LinearLayout)View.inflate(this, R.layout.time, null);
new AlertDialog.Builder(this)
.setTitle("시간을 입력하시오")
.setView(linear)
.setPositiveButton("확인", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
EditText time = (EditText)linear.findViewById(R.id.timeedit);
String str = time.getText().toString();
timer = Integer.parseInt(str);
Message msg = new Message();
msg.what = 1;
msg.arg1 = timer*1000;
alarmHandler.sendMessage(msg);
alarmHandler.sendEmptyMessage(0);
}
})
.setNegativeButton("취소", null)
.show();
}
// 저장된 데이터 읽기
public void readOnClick(View v) {
if (!isFinishing()) {
SQLiteDatabase db = mohaeDB.getReadableDatabase();
Cursor cursor;
cursor = db.rawQuery("SELECT _id, name, time, date FROM activity", null);
Log.d("mydebug", "select 쿼리 성공");
String result = "";
while (cursor.moveToNext()) {
String id = cursor.getString(0);
String name = cursor.getString(1);
String time = cursor.getString(2);
String date = cursor.getString(3);
result += (id + " " + name + " " + time + " " + date + "\n");
}
if (result.length() == 0) {
text.setText("Empty");
} else {
text.setText(result);
}
}
}
public Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if (msg.what == 0) {
new AlertDialog.Builder(c)
.setTitle("어떤 활동 중이신가요?")
.setSingleChoiceItems(R.array.activities, mSelect,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
mSelect = which;
}
})
// .setView(linear)
.setPositiveButton("확인", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
String[] activities = getResources()
.getStringArray(R.array.activities);
// DB 삽입
activity.setName(activities[mSelect]);
activity.setTime(timer);
activity.setDate(myCalendar.getDate());
controler.insert(activity);
alarmHandler.sendEmptyMessage(0); // 다시 팝업을 보내도록 요청
}
}).setNegativeButton("취소", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alarmHandler.sendEmptyMessage(0); // 다시 팝업을 보내도록 요청
}
}).show();
}
}
};
@Override
protected void onStop() { // 액티비티 종료시 쓰래드 종료
// TODO Auto-generated method stub
super.onStop();
handler.removeMessages(0);
thread.interrupt(); // 알람 스레드 종료
}
// 그래프 그리기
public void graphOnClick(View v) {
}
// 서버 업로드
public void serverOnClick(View v) {
WebDBcontroler task=new WebDBcontroler();
if (!isFinishing()) {
SQLiteDatabase db = mohaeDB.getReadableDatabase();
Cursor cursor;
cursor = db.rawQuery("SELECT _id, name, time, date FROM activity", null);
Log.d("mydebug", "select 쿼리 성공");
String result = "";
while (cursor.moveToNext()) {
String id = cursor.getString(0);
String name = cursor.getString(1);
String time = cursor.getString(2);
String date = cursor.getString(3);
task.doInBackground(id,name,time,date);
}
if (result.length() == 0) {
text.setText("Empty");
} else {
text.setText(result);
}
}
}
}
함수 부분 추가한 것 외에는,
StrictMode.ThreadPolicy policy 로 네트워크 정책을 사용한다는걸 강제로 하나 추가했습니다.