Доброе утро,
Я опытный программист, но новичок в разработке Android. Это то, что я в конце концов хочу работать. Я делаю систему продажи для пекарни. У меня есть предварительная база данных с одной таблицей, где каждая строка содержит имя, цену, а также другие предметы каждого продукта. Основная активность состоит из нескольких фрагментов. Почти во всех фрагментах есть переработка для хранения информации о продукте. Есть мексиканское тесто под названием Conchas. Я нахожусь в точке, когда я могу показать все различные типы конч в переработке, где пользователь приложения Android Point of Sale может выбрать, какой тип кончики они хотят вместе с количеством кончений. После нажатия кнопки выбранные продукты попадают в переработку, который существует в другом фрагменте. В фрагменте, где перечислены кончики, я могу получить данные, которые существуют в базе данных комнаты, и использовать информацию в моем приложении в качестве Livedata. Вот фрагменты кода, чтобы лучше объяснить мою ситуацию: < /p>
Объект базы данных, созданный как Singleton: < /p>
`@database (entities = {product.class}, версия = 1)
public Abstract Class Posdatabase extends poomdatabase {< /p>
public abstract ProductDAO getProductDAO();
private static POSDatabase dbInstance;
public static synchronized POSDatabase getInstance(Context context) {
if(dbInstance == null){
dbInstance = Room.databaseBuilder(
context.getApplicationContext(),
POSDatabase.class,
"pos.db").
createFromAsset("database/initial_pos.db").
fallbackToDestructiveMigration().build();
}
return dbInstance;
}
< /code>
} `< /p>
DAO Методы, которые я использую из интерфейса DAO: < /p>
` @dao
product productdao {< /p>
@Insert
void insert(Product product);
@Delete
void delete(Product product);
@Update
void updateProducts(List products);
@Query("SELECT * FROM products_table WHERE outer_product_name = :outerProduct")
LiveData getCorrespondingInnerProducts(String outerProduct);
@Query("SELECT * FROM products_table")
LiveData getAll();
< /code>
} `< /p>
Соответствующий репозиторий: < /p>
` public class Repository {< /p>
private final ProductDAO productDAO;
ExecutorService executor;
Handler handler;
public ProductDAO getProductDAO(){
return productDAO;
}
public Repository(Application application) {
POSDatabase posDatabase = POSDatabase.getInstance(application);
this.productDAO = posDatabase.getProductDAO();
executor = Executors.newSingleThreadExecutor();
handler = new Handler(Looper.getMainLooper());
}
public void insertProduct(Product product){
executor.execute(new Runnable() {
@Override
public void run() {
productDAO.insert(product);
}
});
}
public void deleteProduct(Product product){
executor.execute(new Runnable() {
@Override
public void run() {
productDAO.delete(product);
}
});
}
public void updateProducts(List products){
executor.execute(new Runnable() {
@Override
public void run() {
productDAO.updateProducts(products);
}
});
}
public LiveData getCorrespondingInnerProducts(String outerProduct){
return productDAO.getCorrespondingInnerProducts(outerProduct);
}
public LiveData getAllProducts(){
return productDAO.getAll();
}
< /code>
} `< /p>
Часть моего класса ViewModel. Слишком долго, чтобы показать все: < /p>
`private livedata conchanormal;
private Repository myrepository; < /p>
public POSViewModel(@NonNull Application application){
super(application);
this.myRepository = new Repository(application);
this.conchaNormal = this.myRepository.getCorrespondingInnerProducts("concha normal");
}
< /code>
public livedata getConChanorMal () {
return Conchanormal;
} `< /p>
Итак, в функции Oncreatevie Получен из предварительной базы данных) просто хорошо. Если я запускаю следующий код: < /p>
'LiveData test = posViewModel.getConchaNormal();
if(test.getValue() != null){
Log.i("Miguel", "From Live Data: Number of Conchas normal size " + test.getValue().size());
}
else{
Log.i("Miguel", "I was correct with the error.");
}'
< /code>
Я захожу в верхнюю часть оператора if (test.getValue ()! = NULL) является правдой и в журналах 'из живых данных: количество CONCHAS Нормальный размер 4' < /p>
Но (вот мой вопрос): когда я запускаю этот точный код в функции на функции MainActivity. Включая, что у меня есть еще одно действие, в котором в нем есть другой фрагмент, и в этом фрагменте, если я запускаю один и тот же код в рамках этого фрагмента, я также получаю test.getValue (), равный null. < /P>
Почему я не могу получить эту информацию в этих двух последних местах кода? Просто чтобы сообщить вам, где test.getValue () не является null i, Recyclerview показывает эту информацию. Но в последних местах нет никаких объектов представления, показывающих эту информацию. Заранее спасибо.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... pulated-ro
Невозможно получить доступ к данным из ViewModel, которая изначально получает данные из предварительной комнатной базы д ⇐ Android
Форум для тех, кто программирует под Android
1746627827
Anonymous
Доброе утро,
Я опытный программист, но новичок в разработке Android. Это то, что я в конце концов хочу работать. Я делаю систему продажи для пекарни. У меня есть предварительная база данных с одной таблицей, где каждая строка содержит имя, цену, а также другие предметы каждого продукта. Основная активность состоит из нескольких фрагментов. Почти во всех фрагментах есть переработка для хранения информации о продукте. Есть мексиканское тесто под названием Conchas. Я нахожусь в точке, когда я могу показать все различные типы конч в переработке, где пользователь приложения Android Point of Sale может выбрать, какой тип кончики они хотят вместе с количеством кончений. После нажатия кнопки выбранные продукты попадают в переработку, который существует в другом фрагменте. В фрагменте, где перечислены кончики, я могу получить данные, которые существуют в базе данных комнаты, и использовать информацию в моем приложении в качестве Livedata. Вот фрагменты кода, чтобы лучше объяснить мою ситуацию: < /p>
Объект базы данных, созданный как Singleton: < /p>
`@database (entities = {product.class}, версия = 1)
public Abstract Class Posdatabase extends poomdatabase {< /p>
public abstract ProductDAO getProductDAO();
private static POSDatabase dbInstance;
public static synchronized POSDatabase getInstance(Context context) {
if(dbInstance == null){
dbInstance = Room.databaseBuilder(
context.getApplicationContext(),
POSDatabase.class,
"pos.db").
createFromAsset("database/initial_pos.db").
fallbackToDestructiveMigration().build();
}
return dbInstance;
}
< /code>
} `< /p>
DAO Методы, которые я использую из интерфейса DAO: < /p>
` @dao
product productdao {< /p>
@Insert
void insert(Product product);
@Delete
void delete(Product product);
@Update
void updateProducts(List products);
@Query("SELECT * FROM products_table WHERE outer_product_name = :outerProduct")
LiveData getCorrespondingInnerProducts(String outerProduct);
@Query("SELECT * FROM products_table")
LiveData getAll();
< /code>
} `< /p>
Соответствующий репозиторий: < /p>
` public class Repository {< /p>
private final ProductDAO productDAO;
ExecutorService executor;
Handler handler;
public ProductDAO getProductDAO(){
return productDAO;
}
public Repository(Application application) {
POSDatabase posDatabase = POSDatabase.getInstance(application);
this.productDAO = posDatabase.getProductDAO();
executor = Executors.newSingleThreadExecutor();
handler = new Handler(Looper.getMainLooper());
}
public void insertProduct(Product product){
executor.execute(new Runnable() {
@Override
public void run() {
productDAO.insert(product);
}
});
}
public void deleteProduct(Product product){
executor.execute(new Runnable() {
@Override
public void run() {
productDAO.delete(product);
}
});
}
public void updateProducts(List products){
executor.execute(new Runnable() {
@Override
public void run() {
productDAO.updateProducts(products);
}
});
}
public LiveData getCorrespondingInnerProducts(String outerProduct){
return productDAO.getCorrespondingInnerProducts(outerProduct);
}
public LiveData getAllProducts(){
return productDAO.getAll();
}
< /code>
} `< /p>
Часть моего класса ViewModel. Слишком долго, чтобы показать все: < /p>
`private livedata conchanormal;
private Repository myrepository; < /p>
public POSViewModel(@NonNull Application application){
super(application);
this.myRepository = new Repository(application);
this.conchaNormal = this.myRepository.getCorrespondingInnerProducts("concha normal");
}
< /code>
public livedata getConChanorMal () {
return Conchanormal;
} `< /p>
Итак, в функции Oncreatevie Получен из предварительной базы данных) просто хорошо. Если я запускаю следующий код: < /p>
'LiveData test = posViewModel.getConchaNormal();
if(test.getValue() != null){
Log.i("Miguel", "From Live Data: Number of Conchas normal size " + test.getValue().size());
}
else{
Log.i("Miguel", "I was correct with the error.");
}'
< /code>
Я захожу в верхнюю часть оператора if (test.getValue ()! = NULL) является правдой и в журналах 'из живых данных: количество CONCHAS Нормальный размер 4' < /p>
Но (вот мой вопрос): когда я запускаю этот точный код в функции на функции MainActivity. Включая, что у меня есть еще одно действие, в котором в нем есть другой фрагмент, и в этом фрагменте, если я запускаю один и тот же код в рамках этого фрагмента, я также получаю test.getValue (), равный null. < /P>
Почему я не могу получить эту информацию в этих двух последних местах кода? Просто чтобы сообщить вам, где test.getValue () не является null i, Recyclerview показывает эту информацию. Но в последних местах нет никаких объектов представления, показывающих эту информацию. Заранее спасибо.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79610760/cannot-access-data-from-viemodel-that-originally-gets-data-from-prepopulated-ro[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия