小编cfr*_*frz的帖子

Android SQLite查询列不为空且不为空

我无法弄清楚.query调用的语法.我需要选择与某个列匹配的所有记录,这些列对于第二个(不同的)列没有空值或空值

我最好的尝试:

Cursor cursor = mDatabase.query(DatabaseOpenHelper.TABLE_ROOMS, mAllColumns,
    DatabaseOpenHelper.KEY_ROOM_HOSPITAL_ID
    + " =? AND " + DatabaseOpenHelper.KEY_ISO + " IS NOT NULL OR NOT ?",
    new String[]{String.valueOf(hospitalId), ""}, null, null, null);
Run Code Online (Sandbox Code Playgroud)

这将返回所有记录.如果我使用AND代替OR,它返回与hospitalId匹配的记录,但忽略NOT NULL或NOT""部分.

有小费吗?我应该使用rawQuery调用吗?谢谢.

sqlite android android-sqlite

16
推荐指数
2
解决办法
2万
查看次数

setSearchableInfo(searchManager.getSearchableInfo) 空指针异常

我已经根据文档和其他问题检查并仔细检查了我的清单。我不明白为什么 setSearchableInfo 返回 NullPointerException

主活动.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();

    // current activity is not searchable activity
    ComponentName cn = new ComponentName(this, SearchResultsActivity.class);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(cn));

    return true;
}
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml

<activity
        android:name=".MainActivity"
        android:label="@string/title_main_activity">
        <intent-filter>
            <action android:name="com.csgiusa.treatmentmanager.csgitreatmentmanager.RoomEditDetailed" />
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.csgiusa.treatmentmanager.csgitreatmentmanager.MainActivity" />
        <meta-data
            android:name="android.app.default_searchable"
            android:value=".SearchResultsActivity" />
    </activity>

    <activity …
Run Code Online (Sandbox Code Playgroud)

java xml android android-search android-studio

2
推荐指数
1
解决办法
1494
查看次数

Android更改存储的SharedPreferences值?

我在登录时创建了一个共享首选项文件,但我无法找出更改我的应用程序内部首选项的代码.

SharedPreferences.java

    public void editHospitalId(String hospital_id) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_context);
        Editor editor = prefs.edit();
        editor.putString(KEY_HOSPITALID, hospital_id);
        editor.commit();
}
Run Code Online (Sandbox Code Playgroud)

我已经在登录时初始化了KEY_HOSPITALID的值:

SharedPreferences.java

// Constructor
public SessionManager(Context context){
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

// create login session

public void createLoginSession(String name, String hospital_id){
    // Storing login value as TRUE
    editor.putBoolean(IS_LOGIN, true);

    // Storing name in pref
    editor.putString(KEY_NAME, name);

    // Storing email in pref
    editor.putString(KEY_HOSPITALID, hospital_id);

    // commit changes
    editor.commit();
Run Code Online (Sandbox Code Playgroud)

我想我可以删除该值并重新添加它?但必须有一种方法来覆盖它.

java android

2
推荐指数
1
解决办法
3040
查看次数