2016-09-14 3 views
-1

Die Methode Cons.getpersonIdForRegisteredUser() gibt eine Zeichenfolge zurück.
Meine Frage besteht aus zwei Teilen: Die eine ist die Person id und der andere ist data enabledVergleichen eines bestimmten Felds mit einer Zeichenfolge in SQLite

@Override 
public Loader<Cursor> onCreateLoader(final int i, final Bundle bundle) { 

    String sortOrder = ContactProviderContract.ContactDatabaseEntry.COLUMN_NAME_FIRST_NAME 
       + " COLLATE NOCASE ASC"; 

    String selection = ContactProviderContract. 
       ContactDatabaseEntry.COLUMN_NAME_PERSON_ID + " != " + Cons.getPersonIdForRegisteredUser(getActivity().getApplicationContext()) 
       + " AND " 
       + ContactProviderContract.ContactDatabaseEntry.COLUMN_NAME_DATA_ENABLED + " = ?"; 
    String[] selectionArgs = { "1" }; 

    return new CursorLoader(getActivity().getApplicationContext(), 
        ContactProviderContract.CONTACTS_URI, 
        ContactProviderContract.ContactDatabaseEntry.MIN_DETAILS_COLUMNS, 
        selection, 
        selectionArgs, 
        sortOrder); 
} 

Der Fehler zu prüfen, ob die Zeichenfolge aus der Methode abgerufen Cons.getpersonid...() als Säule betrachtet wird und nicht als String vergleichen .

+0

Sie können nicht '! =' Oder 'AND' mit der Auswahl haben. Diese müssen 'WHERE' Argumente sein. –

+0

Welche Codezeile verursacht den Fehler? –

Antwort

0

Wenn ich den Fehler richtig verstanden habe, dann sollten Sie das Cons.getPersonId... in die selectionArgs einfügen.

String selection = ContactProviderContract. 
      ContactDatabaseEntry.COLUMN_NAME_PERSON_ID + " != ?" + 
      + " AND " 
      + ContactProviderContract.ContactDatabaseEntry.COLUMN_NAME_DATA_ENABLED + " = ?"; 
String[] selectionArgs = { "1" , Cons.getPersonIdForRegisteredUser(getActivity().getApplicationContext()) }; 
Verwandte Themen