Ich versuche, den Image-Pfad aus einem ImageView zu erhalten. Die ImageView wird über einen String-Pfadspeicher in SQLite db geladen.
Wenn ich ein Element meines Db in einigen Feldern außer dem Bildpfad eins ändere, kann ich den Pfad von imageView nicht zurücklesen, um die db korrekt zu aktualisieren. Daher wird der Feldbildpfad nach jeder Art von Aktualisierung zu null.Image-Pfad von einem ImageView abrufen
In Code, wenn ich auf die Schaltfläche Speichern klicken nenne ich die saveProduct() -Methode:
private void saveProduct() {
// Read from input field
//Use trim to eliminate leading or trailing white space
String nameString = mNameEditText.getText().toString().trim();
String qtyString = mQtyEditText.getText().toString().trim();
String priceString = mPriceEditText.getText().toString().trim();
String mailString = mEmailEditText.getText().toString().trim();
String phoneString = mPhoneEditText.getText().toString().trim();
// Check if this is a new product or an existing one
if (mcurrentProdUri == null &&
TextUtils.isEmpty(nameString) && TextUtils.isEmpty(qtyString)
&& TextUtils.isEmpty(priceString)&& TextUtils.isEmpty(mailString)
&& TextUtils.isEmpty(phoneString)) {
return;
}
//Create a ContentValues object to populate the database
ContentValues values = new ContentValues();
values.put(InventoryContract.ProductEntry.COLUMN_PRODUCT_NAME, nameString);
values.put(InventoryContract.ProductEntry.COLUMN_PRODUCT_QTY, qtyString);
values.put(InventoryContract.ProductEntry.COLUMN_PRODUCT_PRICE, priceString);
values.put(InventoryContract.ProductEntry.COLUMN_EMAIL, mailString);
values.put(InventoryContract.ProductEntry.COLUMN_PHONE, phoneString);
values.put(InventoryContract.ProductEntry.COLUMN_PRODUCT_PIC, picPath);
//Determine if this is a new product or not by checking if mCurrentProdUri is null or not
if (mcurrentProdUri == null) {
Uri newUri = getContentResolver().insert(InventoryContract.ProductEntry.CONTENT_URI, values);
// check if newUri is null or not
if (newUri == null){
//Show an error toast message
Toast.makeText(this, "There has been an error inserting a new product", Toast.LENGTH_SHORT).show();
} else {
//Otherwise show a successful addition message
Toast.makeText(this, "A new product has been added!", Toast.LENGTH_SHORT).show();
}
} else {
//Otherwise if this is an existing product proceed updating it with new data
int rowsAffected = getContentResolver().update(mcurrentProdUri, values, null, null);
if (rowsAffected == 0) {
// If no rows were affected show error toast message
Toast.makeText(this, "There has been an error in updating the product", Toast.LENGTH_SHORT).show();
} else {
// Otherwise the update was successful and we can show the related Toast message
Toast.makeText(this, "The product has been updated!", Toast.LENGTH_SHORT).show();
}
}
}
Ich habe bereits alle verwandten Beiträge lesen, aber ich weiß wirklich nicht, wie ich das Verfahren das Lesen machen kann Imageview, um aus den zugehörigen Bildpfad (oder Uri)
Vielen dank für die Unterstützung
Ein 'ImageView' weiß nicht, woher das Bild kam. Sie müssen diese Informationen auf andere Weise speichern, z. B. über ein separates Feld in Ihrer Aktivität oder in Ihrem Fragment. – CommonsWare
@CommonsWare danke für die schnelle Antwort. Ich lade die Daten auf der Benutzeroberfläche mit getLoaderManager(). InitLoader (EXISTING_PROD_LOADER, null, das);, Ich muss die Pfaddaten hier speichern? – akstavrh
@CommonsWare! Ich habe das Hinzufügen einiger Logik in OnLoadFinished() gelöst, wie in diesem Beitrag https://stackoverflow.com/questions/14424624/using-cursorloader-with-loadermanager-to-retrieve-images-from-android-apps vorgeschlagen. Danke, dass du mich auf den richtigen Weg gebracht hast! – akstavrh