imageViewから画像パス文字列を取得しようとしています。 imageViewは、SQLiteデータベースに文字列パスストアを使用して請求されます。
画像パス1以外の項目でDbの項目を変更すると、imageViewからパスを読み取ってDBを正しく更新できません。したがって、フィールド画像のパスは、何らかの更新後にnullになります。私はすでに、すべての関連記事を読んImageViewから画像パスを取得する
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();
}
}
}
が、私は本当に私が方法を読み込むことができますかわからない:私はsaveProduct()メソッドを呼び出して保存ボタンをクリックし、コードで
、関連画像パス(またはURI)を出すためにImageViewのサポート
「ImageView」は、画像がどこから来たのかわかりません。この情報は、アクティビティやフラグメントの別のフィールドなど、別の方法で覚えておく必要があります。 – CommonsWare
@CommonsWareは素早く答えてくれてありがとう。 initLoader(EXISTING_PROD_LOADER、null、this);ここにパスデータを格納する必要があると思いますか?getLoaderManager()を使用してUIにデータをロードします。 – akstavrh
@CommonsWare!私は、この記事のhttps://stackoverflow.com/questions/14424624/using-cursorloader-with-loadermanager-to-retrieve-images-from-android-appsで提案されているように、OnLoadFinished()でいくつかのロジックを追加して解決しました。正しい軌道に乗ってくれてありがとう! – akstavrh