2015-05-31 1 views
-1

Когда я нажимаю кнопку, он вызывает функцию setProximityAlert(), а затем отображается тост. Я не понимаю, где проблема,Когда я нажимаю кнопку «Пуск» для реакции близости, он сбрасывает мое приложение

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.locations); 

    Button start = (Button) findViewById(R.id.startl); 
    start.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setProximityAlert(); 
      Toast.makeText(getBaseContext(), "Started", Toast.LENGTH_LONG).show(); 

     } 
    }); 

} 

private static final String MMH_PROXIMITY_ALERT = "com.example.ProximityAlert"; 
private void setProximityAlert() { 
    Cursor c = db.rawQuery("SELECT * from locations", null); 

    Double lng = c.getDouble(c.getColumnIndex("longitude")); 
    c.moveToNext(); 

    Double lat = c.getDouble(c.getColumnIndex("latitude")); 
    c.moveToNext(); 

    Float rds = c.getFloat(c.getColumnIndex("radius")); 
    c.moveToNext(); 

    String locService = Context.LOCATION_SERVICE; 
    LocationManager locationManager; 
    locationManager = (LocationManager)getSystemService(locService); 

    long expiration = -1; // do not expire 
    Intent intent = new Intent(MMH_PROXIMITY_ALERT); 
    PendingIntent proximityIntent = PendingIntent.getBroadcast(this, -1, intent, 0); 
    locationManager.addProximityAlert(lat, lng, rds, expiration, proximityIntent); 
    c.close(); 

    locationManager.addProximityAlert(
     lat, // the latitude of the central point of the alert region 
     lng, // the longitude of the central point of the alert region 
     rds, // the radius of the central point of the alert region, in meters 
     expiration, // time for this proximity alert, in milliseconds, or -1 to indicate no       expiration 
     proximityIntent // will be used to generate an Intent to fire when entry to or exit from the alert region is detected 
    ); 

    IntentFilter filter = new IntentFilter(MMH_PROXIMITY_ALERT); 
    registerReceiver(new ProximityIntentReceiver(), filter); 
} 
+0

Какая ошибка в окне logcat? –

+0

И можете ли вы предоставить свой файл манифеста здесь? –

+0

как отправить журнал cat plz help слишком большой для комментариев – sarfraz

ответ

0

Используйте moveToFirst метод на курсор, прежде чем пытаться получить доступ к его данным.

+0

Спасибо, сэр, это сработало для меня – sarfraz

0

DBAdapter Класс:

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

    public class DBAdapter { 

     // Common params 
     private static final int DATABASE_VERSION = 1; 
     private final Context context; 
     private DatabaseHelper DBHelper; 
     private SQLiteDatabase db; 
     public static final String DATABASE_NAME = "db_name"; 

     public DBAdapter(Context ctx) { 
      this.context = ctx; 
      DBHelper = new DatabaseHelper(context); 
     } 

     private static class DatabaseHelper extends SQLiteOpenHelper { 
      DatabaseHelper(Context context) { 
       super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      } 

      public void onCreate(SQLiteDatabase db) { 
       db.execSQL(CREATE_MY_TABLE); 
      } 

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

     // ---open database--- 
     public DBAdapter open() throws SQLException { 
      db = DBHelper.getWritableDatabase(); 
      return this; 
     } 

     // ---closes database--- 
     public void close() { 
      DBHelper.close(); 
     } 

     // --- Table --- 
     public static final String MY_TABLE = "my_tbl"; 
     public static final String COLUMN_ID = "id"; 
     public static final String COLUMN_USER_ID = "user_id"; 
     public static final String COLUMN_TITLE = "title"; 

     private static final String CREATE_MY_TABLE = "create table " 
       + MY_TABLE + "(" + COLUMN_ID 
       + " text not null, " + COLUMN_USER_ID 
       + " text not null, " + COLUMN_TITLE 
       + " text not null);"; 

     // ---insert data in database--- 
     public long insertData(Model model) { 

      ContentValues initialValues = new ContentValues(); 
      initialValues.put(COLUMN_ID, model.getId()); 
      initialValues.put(COLUMN_USER_ID, model.getUserId()); 
      initialValues.put(COLUMN_TITLE, model.getTitle()); 

      return db.insert(MY_TABLE, null, initialValues); 
     } 

     // ---get all table's data--- 
     public Cursor getAllData() { 
      return db.query(MY_TABLE, GET_DATA(), null, null, 
        null, null, null); 
     } 

     // ---deletes all table's data--- 
     public void deleteAllTables() { 
      SQLiteDatabase db = DBHelper.getWritableDatabase(); 
      db.delete(MY_TABLE, null, null); 
     } 

     // ---updates a table's details--- 
     public boolean updateTable(String id, String title) { 
      ContentValues initialValues = new ContentValues(); 

      // update any field 
    //  initialValues.put(COLUMN_TITLE, title); 
      return db.update(MY_TABLE, initialValues, 
        COLUMN_ID + "=" + id, null) > 0; 
     } 

     private static String[] GET_DATA(){ 
      String[] getArray = new String []{ COLUMN_ID, COLUMN_USER_ID,COLUMN_TITLE }; 
      return getArray; 
     } 
    } 

Как пользоваться

частный DBAdapter дб;

db = new DBAdapter(mContext); 

Перед выборкой данных из базы данных у вас открытой базы данных, как:

db.open(); 

Start, чтобы получить данные с помощью курсора по запросу

Cursor cur = db.getAllData(); 

if(cur!=null && cur.getCount()>0){ 
    cur.moveToFirst(); 

    for(int i = 0; i < cur.getCount(); i++) 

// Here get all data from cursor 

    cur.movetoNext(); 
    } 

cur.close(); 

После завершения работы базы данных вы до закрыть база данных li ke:

db.close(); 
+0

Сэр спасибо за ваш ответ. Я действительно не использовал эти вещи. Plz I создал db Использование db = openOrCreateDatabase ("EventsDB", Context.MODE_PRIVATE, null); db.execSQL («СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ местоположения (имя VarChar, широта Double, longitude Double, radius Float);»); Могу ли я использовать DBAdapter в этом случае. Этот код достаточно для DBAdapter. – sarfraz

+0

whare Мне нужно закодировать этот частный DBAdapter db; db = новый DBAdapter (mContext); Это дает ошибку в oncreat и в setProximityAlert() db.open(); тоже дает ошибку – sarfraz

+0

@sarfraz, пожалуйста, уточните мой отредактированный ответ –

Смежные вопросы