Я пытаюсь получить информацию о пользователе в моем ящике навигации. У меня есть две разные таблицы, в одной уже сохранены имя пользователя и курс, а в другой - идентификатор и адрес электронной почты пользователя, полученные во время регистрации. Я хочу отобразить имя пользователя, идентификатор, курс и адрес электронной почты. У меня есть класс пользователя с идентификатором, адресом электронной почты и паролем для регистрации, но не с именем и курсом. Как мне получить данные из этого класса?
Приведенный ниже метод предназначен для извлечения имени пользователя из таблицы с таким же идентификатором. Я хочу отобразить это в навигационном ящике. Как я должен вызвать функцию и отобразить результат?
public String getUserNameFromSID(String sid) {
String rv = "";
String whereclause = KEY_SID + "=?";
String[] whereargs = new String[]{sid};
SQLiteDatabase db = this.getReadableDatabase();
Cursor csr = db.query(TABLE_USERINFO,null,whereclause,whereargs,null,null,null);
if (csr.moveToFirst()) {
rv = csr.getString(csr.getColumnIndex(KEY_NAME));
}
csr.close();
return rv;
Вы можете использовать ПРИСОЕДИНИТЬСЯ (из предыдущих вопросов я полагаю, что SID есть в обеих таблицах, поэтому вы должны использовать его в качестве основы для ПРИСОЕДИНИТЬСЯ).
Так что вы можете использовать что-то вроде SELECT * FROM userinfo JOIN userreg ON userinfo.sid = userreg.sid
Чтобы использовать удобный метод запрос, JOIN должен быть частью 1-го (табличного) параметра.
Таким образом, приведенное выше будет закодировано как: -
public String getUserNameFromSID(String sid) {
String rv = "";
String joinclause = " JOIN " + TABLE_USERREG + " ON " + TABLE_USERINFO + "." + KEY_SID + " = " + TABLE_USERREG + "." + KEY_SID; //<<<<<<<<<< ADDED
String whereclause = KEY_SID + "=?";
String[] whereargs = new String[]{sid};
SQLiteDatabase db = this.getReadableDatabase();
Cursor csr = db.query(TABLE_USERINFO + joinclause,null,whereclause,whereargs,null,null,null); //<<<<<<<<<< CHANGED
if (csr.moveToFirst()) {
rv = csr.getString(csr.getColumnIndex(KEY_NAME));
}
csr.close();
return rv;
}
The thing is, that i would need to pass the Sid parameter to the function which i can only do in the register/login page. How then can i pass this value to the navigation page?
Вместо страниц для Android используется термин «Действия». Вы можете передавать данные из одного действия в другое вызванное/запущенное/вызванное действие с помощью Intent Extras после создания экземпляра Intent при подготовке к вызову. То есть, если действие должно вызываться напрямую из родительского действия (регистрационное действие в вашем случае).
Если, например, действие регистрации было вызвано из исходного действия и возвращается из этого действия, вы все равно используете намерение для возврата значений, но действие регистрации должно быть вызвано/запущено/вызвано с помощью startActivityForResult. Действие, запускающее действие регистрации, должно переопределить метод onActivityResult. Действие регистрации устанавливает дополнительные намерения и использует setResult для указания кода результата, а затем возвращаемого намерения.
Существует множество примеров переполнения стека, например. Отправка данных обратно в основное действие в Android
Дело в том, что мне нужно будет передать параметр Sid функции, которую я могу сделать только на странице регистрации/входа. Как тогда я могу передать это значение на страницу навигации?