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

널포인트 오류 좀 잡아주시면 감사할께요

0 추천
public class MainActivity extends Activity {
 
 DBHelper dbHelper;
 final static String dbName = "bomb.db";
 final static int dbVersion = 5;
 TextView getTime, juso;
 ArrayList<String> item;
 ArrayAdapter<String> adapter;
 ListView list;
 LocationManager locationManager;
 private String provider;
 private Context context;
 private  GpsLocationListener listener = null;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  juso = (TextView)findViewById(R.id.juso);
  
  dbHelper = new DBHelper(this, dbName, null, dbVersion);
  
  adapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_multiple_choice, item);
  final ListView list = (ListView)findViewById(R.id.list);
  list.setAdapter(adapter);
  list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  
  list.setOnItemClickListener(mItemClickListener);
  findViewById(R.id.delete).setOnClickListener(mClickListener);
  
  loadGps();
  getLocation();
 }
 
  Button.OnClickListener mClickListener = new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(v.getId()) {
    case R.id.delete :
     int id = list.getCheckedItemPosition();
     if(id != list.INVALID_POSITION) {
      item.remove(id);
      list.clearChoices();
      adapter.notifyDataSetChanged();
     }   
     break;
    }
   }
  };
  
  AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {

@Override
   public void onItemClick(AdapterView parent, View view, int position, long id) {
    // TODO Auto-generated method stub
    String mes = "Select item =" +item.get(position);
    Toast.makeText(MainActivity.this, mes, Toast.LENGTH_SHORT).show();
   }   
  };
  
 public void loadGps() {
  Log.w("tag", "loadGPS");
  locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  
  Criteria criteria = new Criteria();
  criteria.setAccuracy(Criteria.ACCURACY_FINE);  // 정확도
     criteria.setPowerRequirement(Criteria.POWER_LOW); // 전원 소비량
     criteria.setAltitudeRequired(false);    // 고도, 높이 값을 얻어 올지를 결정
     criteria.setBearingRequired(false);
     criteria.setSpeedRequired(false);     //속도
     criteria.setCostAllowed(true);      //위치 정보를 얻어 오는데 들어가는 금전적 비용
     provider = locationManager.getBestProvider(criteria, true);
     listener = new GpsLocationListener();
     locationManager.requestLocationUpdates(provider, 1000, 5, listener); 
 }
 
  
 public void mOnClick(View v) {
  SQLiteDatabase db;
  String sql;
  switch(v.getId()) {
      
   case R.id.save :
    
    String timing2 = getTime.getText().toString();
    String juso2 = juso.getText().toString();
      
    dbHelper = new DBHelper(this, dbName, null, dbVersion);
    db = dbHelper.getWritableDatabase();
    sql = String.format("INSERT INTO ksj(timing, juso) VALUES('%s', '%s');", timing2, juso2);
    Log.d("tag", sql);
    db.execSQL(sql);
    Toast.makeText(this, "저장되었습니다.", Toast.LENGTH_SHORT).show();
    
    break;
    
   case R.id.data :
   
    setContentView(R.layout.activity2nd);
    ArrayList<String> item = new ArrayList<String>();
    adapter = new ArrayAdapter<String>(this,
           android.R.layout.simple_list_item_multiple_choice, item);
    ListView list = (ListView)findViewById(R.id.list);
    list.setAdapter(adapter);
    adapter.notifyDataSetChanged();
       
    Log.d("DATA", "Search data");
    db = dbHelper.getReadableDatabase();
    sql = "SELECT*FROM ksj;";
    Cursor cursor = db.rawQuery(sql, null);
       
        if(cursor.getCount() > 0) {     
           while(cursor.moveToNext()){
                 String time1 = cursor.getString(1);
                 Log.d("tag", "cursor.getString1 = "+time1);
                 String juso1 = cursor.getString(2);
                 Log.d("tag", "cursor.getString2 =" +juso1);
                
                 item.add(time1+"\n"+juso1);
                 adapter.notifyDataSetChanged();
                }
           cursor.close();
        }
        dbHelper.close();
        break;      
     } 
  }
}

 

06-10 11:42:41.577: E/AndroidRuntime(789): FATAL EXCEPTION: main
06-10 11:42:41.577: E/AndroidRuntime(789): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gps0610/com.example.gps0610.MainActivity}: java.lang.NullPointerException
06-10 11:42:41.577: E/AndroidRuntime(789): Caused by: java.lang.NullPointerException
06-10 11:42:41.577: E/AndroidRuntime(789):  at com.example.gps0610.MainActivity.onCreate(MainActivity.java:57)
 

 

 

 

 

57번줄은 위소스상 27번줄인 list.setAdapter(adapter); 입니다.

소스내용은 ListView의 데이터를 체크하여 삭제하는 소스입니다.

앤드류이드 (6,190 포인트) 님이 2013년 6월 10일 질문

1개의 답변

0 추천
 
채택된 답변
Arraylist인 item을 생성하지 않으셨네요. item이 null 이니 item 객체를 생성 하세요.

item = new ArrayList<String>;
pulak (2,610 포인트) 님이 2013년 6월 10일 답변
앤드류이드님이 2013년 6월 11일 채택됨
ㄳ합니다. ^^ 큰 도움이 되었습니다.
...