마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

데이터베이스 생성이 안됩니다 계속 에러나네요 도와주세요

0 추천
Tab1Activity.java

 

package com.example.record;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
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 Tab1Activity extends Activity implements SensorEventListener {

 
 EditText vi;
 TextView textView3;
 Button btn_reset,btn_start;
 static Button btn_in;
 int count=0;
 String str = String.format("%d",count);
 myDBHelper myHelper;
 SQLiteDatabase sqlDB;
 private long lastTime;
    private float speed,lastX,lastY,lastZ;
    private float x, y, z;
    private static final int SHAKE_THRESHOLD = 2400;
    @SuppressWarnings("deprecation")
    private static final int DATA_X = SensorManager.DATA_X;
    @SuppressWarnings("deprecation")
 private static final int DATA_Y = SensorManager.DATA_Y;
    @SuppressWarnings("deprecation")
 private static final int DATA_Z = SensorManager.DATA_Z;
    private SensorManager sensorManager;
    private Sensor accelerormeterSensor;

    public void onCreate(Bundle savedInstanceState) {
     setContentView(R.layout.activity_record);
     vi = (EditText)findViewById(R.id.tv);
     vi.setText(str);
     super.onCreate(savedInstanceState);
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        accelerormeterSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        btn_reset=(Button)findViewById(R.id.btn_reset);
        btn_start=(Button)findViewById(R.id.btn_start);
        btn_in=(Button)findViewById(R.id.btn_in);
        btn_in.setVisibility(android.view.View.VISIBLE);
        btn_reset.setVisibility(android.view.View.VISIBLE);
        btn_start.setVisibility(android.view.View.VISIBLE);
        vi.setVisibility(android.view.View.VISIBLE);
        //textView3.setVisibility(android.view.View.VISIBLE);
       
        
  btn_reset.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
    count=0;
    vi.setText(String.valueOf(count));
   }
  });
  myHelper = new myDBHelper(this);
        btn_in.setOnClickListener(new View.OnClickListener() {
   
   public void onClick(View v) {
    
    sqlDB = myHelper.getWritableDatabase();
    sqlDB.execSQL("INSERT INTO groupTBL VALUES ( '" + str + ");");
    sqlDB.close();
    Toast.makeText(getApplicationContext(), "입력됨", Toast.LENGTH_SHORT).show();
     }
    });
    }

  

    @Override

    public void onStart() {
        super.onStart();
        if (accelerormeterSensor != null)
           sensorManager.registerListener(this, accelerormeterSensor,
           SensorManager.SENSOR_DELAY_GAME);
    }  

    @Override

    public void onStop() {
        super.onStop();
        if (sensorManager != null)
            sensorManager.unregisterListener(this);
    }

  

   public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }

  
    @SuppressWarnings("deprecation")
 public void onSensorChanged(SensorEvent event) {
     if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER) {
      long currentTime=System.currentTimeMillis();
      long gabOfTime=(currentTime-lastTime);
        
        if(gabOfTime>100){
         lastTime=currentTime;
          x = event.values[SensorManager.DATA_X];
             y = event.values[SensorManager.DATA_Y];
             z = event.values[SensorManager.DATA_Z];
             speed = Math.abs(x+y+z-lastX-lastY-lastZ)/gabOfTime * 10000;

         if (speed > SHAKE_THRESHOLD) {
          count++;
          str=String.format("%d",count);
          vi.setText(str);
         }
                lastX = event.values[DATA_X];
                lastY = event.values[DATA_Y];
                lastZ = event.values[DATA_Z];

             }
            }

        }
  
   
           
   
     public class myDBHelper extends SQLiteOpenHelper {
  public myDBHelper(Context context) {
   super(context, "groupDB", null, 1);
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
   db.execSQL("CREATE TABLE  groupTBL (gNumber INTEGER);");
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   db.execSQL("DROP TABLE IF EXISTS groupTBL");
   onCreate(db);
  }
      }

    }

 

 

Tab3Activity.java

 

package com.example.record;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Tab3Activity extends Activity {
 
 TextView text2;
 LinearLayout linear3;
 EditText edit1, edit2;
 myDBHelper myHelper;
 Button btn_in;
 int count;
 SQLiteDatabase sqlDB;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_record);
    
  text2 = (TextView)findViewById(R.id.textView2);
  linear3 = (LinearLayout)findViewById(R.id.LinearLayout3);
  edit1 = (EditText)findViewById(R.id.editText1);
  edit2 = (EditText)findViewById(R.id.editText2);
  btn_in = (Button)findViewById(R.id.btn_in);
  text2.setVisibility(android.view.View.VISIBLE);
  edit1.setVisibility(android.view.View.VISIBLE);
  edit2.setVisibility(android.view.View.VISIBLE);
  btn_in.setBottom(Tab1Activity.btn_in.getBottom());
 
  
  btn_in.setOnClickListener(new View.OnClickListener() {
   @SuppressWarnings("unused")
   public void onClick(View v) {
   Intent intent = getIntent();
   sqlDB = myHelper.getReadableDatabase();
   Cursor cursor;
   cursor = sqlDB.rawQuery("SELECT * FROM groupTBL;", null);
   String strNames = "걸음수" + "\r\n" + "--------" + "\r\n";
   while (cursor.moveToNext()) {
   strNames += cursor.getString(0) + "\r\n";
    }
   edit1.setText(strNames);
   cursor.close();
   sqlDB.close();
     }
    });
 
  
    
 }
 
 public class myDBHelper extends SQLiteOpenHelper {
  public myDBHelper(Context context) {
   super(context, "groupDB", null, 1);
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
   db.execSQL("CREATE TABLE  groupTBL (gNumber INTEGER);");
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   db.execSQL("DROP TABLE IF EXISTS groupTBL");
   onCreate(db);
   
  }
  
  
 }

}

 

 

 

 

tab1activity는 만보기 소스인데 만보기가 작동은 합니다

근데 만보기가 작동하다가 btn_in버튼을 누르면 데이터베이스가 생성이 되면서 tab3activity에 출력이 되게 할려고하는데요

책보면서 소스는 오류가 없고 다 맞는데 btn_in버튼을 누르면 어플이 중지되었다고 합니다....

다르게도 해봤는데 데이터베이스 생성이 아예안되네요

어디가 잘못된거죠? 도와주세요ㅠㅠ
대학생 (200 포인트) 님이 2013년 11월 18일 질문

1개의 답변

0 추천
Log를 보여주셔야죠....

Tab3Activity의 myHelper nullPointerException...이 보이는거 같네요...
libre2k (7,420 포인트) 님이 2013년 11월 19일 답변
...