0
안녕하세요 저는 sqllite 데이터베이스에 이미지를 업로드하려고합니다. 그리고 잘 작동합니다. 문제 나는 어떤 이미지 프로그램 충돌을 선택하지 않으면 직면하고있다. 사용자가 갤러리에서 이미지를 선택하지 않으면 "이미지를 선택하십시오."을 표시하고 싶습니다. 어떻게 그 검증을 할 수 있습니까 ?? 여기 내 코드입니다 :android studio에서 이미지 업로드 확인
BlogActivity.java
public class BlogActivity extends AppCompatActivity {
Button btnSaveRecord;
Button btnfullinfo;
Button btnNewUser;
EditText editFirstName;
EditText editLastName;
Button btnSaveImage;
ImageView showImage;
EditText editWeb;
DatabaseManager databaseManager;
Blog blog = new Blog();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blog_activity);
btnSaveRecord = (Button) findViewById(R.id.btnSaveRecord);
editFirstName = (EditText) findViewById(R.id.editFirstName);
editLastName = (EditText) findViewById(R.id.editLastName);
btnSaveImage = (Button) findViewById(R.id.btnSaveImage);
editWeb = (EditText) findViewById(R.id.editWeb);
showImage = (ImageView) findViewById(R.id.showImage);
databaseManager = new DatabaseManager(BlogActivity.this);
if (getIntent().getExtras() != null) {
blog = getIntent().getExtras().getParcelable("Blog");
// Toast.makeText(RegistrationActivity.this, user.get_first_name(), Toast.LENGTH_SHORT).show();
editFirstName.setText(blog.get_title());
editLastName.setText(blog.getBlog_desc());
editWeb.setText(blog.getBlog_link());
showImage.setImageBitmap(convertToBitmap(blog.getBlog_image()));
}
btnSaveImage = (Button) findViewById(R.id.btnSaveImage);
btnSaveImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadImageGallery();
}
});
btnfullinfo = (Button) findViewById(R.id.btnfullinfo);
btnfullinfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BlogActivity.this, BloglistActivity.class);
startActivity(intent);
}
});
btnSaveRecord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Bitmap bitmap = resize(((BitmapDrawable) showImage.getDrawable()).getBitmap(), 512, 512);
blog.setBlog_tilte(editFirstName.getText().toString());
blog.setBlog_desc(editLastName.getText().toString());
blog.setBlog_image(convertToBase64(bitmap));
blog.setBlog_link(editWeb.getText().toString());
if (blog.getBlog_ID() == 0) {
databaseManager.addBlog(blog);
} else {
databaseManager.updateBlog(blog);
}
Toast toast = Toast.makeText(BlogActivity.this, "Blog Added Successfully", Toast.LENGTH_SHORT);
toast.show();
}
});
btnNewUser = (Button) findViewById(R.id.btnNewUser);
btnNewUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//loadImageGallery();
editFirstName.setText("");
editLastName.setText("");
showImage.setImageBitmap(null);
editWeb.setText("");
blog = new Blog();
}
});
}
public void loadImageGallery() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String fileSelected = null;
if (resultCode == RESULT_OK) {
/** Get File from Gallery**/
try {
InputStream inputStream = getContentResolver().openInputStream(data.getData());
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
showImage.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Toast.makeText(BlogActivity.this, "Working", Toast.LENGTH_SHORT).show();
}
}
public String convertToBase64(Bitmap bitmap) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
byte[] byteArray = os.toByteArray();
return Base64.encodeToString(byteArray, 0);
}
public Bitmap convertToBitmap(String base64String) {
byte[] decodedString = Base64.decode(base64String, Base64.DEFAULT);
Bitmap bitmapResult = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
return bitmapResult;
}
private Bitmap resize(Bitmap originalImage, int width, int height) {
Bitmap background = Bitmap.createBitmap((int) width, (int) height, Bitmap.Config.ARGB_8888);
float originalWidth = originalImage.getWidth(), originalHeight = originalImage.getHeight();
Canvas canvas = new Canvas(background);
float scale = width/originalWidth;
float xTranslation = 0.0f, yTranslation = (height - originalHeight * scale)/2.0f;
Matrix transformation = new Matrix();
transformation.postTranslate(xTranslation, yTranslation);
transformation.preScale(scale, scale);
Paint paint = new Paint();
paint.setFilterBitmap(true);
canvas.drawBitmap(originalImage, transformation, paint);
originalImage.recycle();
return background;
}
//Actiobar Menu Item
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.main, menu);
MenuInflater inflater = this.getMenuInflater();
inflater.inflate(R.menu.appmenu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.idblog:
startActivity(new Intent(getApplicationContext(), BloglistActivity.class));
return true;
case R.id.idShowquiz:
startActivity(new Intent(getApplicationContext(), QuizActivity.class));
return true;
case R.id.idaddblogs:
startActivity(new Intent(getApplicationContext(), BlogActivity.class));
return true;
case R.id.idlinks:
startActivity(new Intent(getApplicationContext(), LinkActivity.class));
return true;
case R.id.idShowportfolio:
startActivity(new Intent(getApplicationContext(), PersonlistActivity.class));
return true;
case R.id.idaddportfolio:
startActivity(new Intent(getApplicationContext(), PersonActivity.class));
return true;
case R.id.idaddContact:
startActivity(new Intent(getApplicationContext(), ContactActivity.class));
return true;
case R.id.idsms:
startActivity(new Intent(getApplicationContext(), SmsActivity.class));
return true;
case R.id.idlogout:
// Toast.makeText(this, " Log Out ", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear all the stack
intent.putExtra("Exit me", true);
startActivity(intent);
finish();
}
return super.onOptionsItemSelected(item);
}
}
blog_activity.xml는
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ImageView
android:id="@+id/showImage"
android:layout_width="400dp"
android:layout_height="100dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter" />
<!--android:src="@drawable/placeholder"-->
<Button
android:id="@+id/btnSaveImage"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_gravity="center_horizontal"
android:background="#f66565"
android:text="Select Image" />
<EditText
android:id="@+id/editFirstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Blog Title">
<requestFocus />
</EditText>
<EditText
android:id="@+id/editLastName"
android:layout_width="match_parent"
android:layout_height="150dp"
android:ems="10"
android:hint="Enter Blog Description" />
<EditText
android:id="@+id/editWeb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="Enter Web Link">
<requestFocus />
</EditText>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp">
<Button
android:id="@+id/btnNewUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:background="#f66565"
android:text="New Blog" />
<Button
android:id="@+id/btnSaveRecord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:background="#f66565"
android:text="Save Blog" />
<Button
android:id="@+id/btnfullinfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:background="#f66565"
android:text="Show All" />
</LinearLayout>
</LinearLayout>
나는 보통 이런 식으로 이미지를 선택하고 내가 어떤 문제를 얻지 않는다
이미지를 선택하지 않고 저장을 누르면 항상 null 포인터 예외가 표시됩니다. –
그래서 당신은 무엇을 선택하고 있습니까? 당신이 뒤로 버튼을 밀었 기 때문에 아무것도? –
이것은 내 삽입 양식입니다. 이미지를 선택하지 않고 내 폼을 던지는 null 포인터 예외를 저장하지 않으면. 나는 빈 문자열을 저장할 수 없다고 생각한다. 그 이유는 사용자가 이미지를 선택하는 것을 잊었을 때 메시지를 보여주고 싶습니다. 메시지를 누르십시오. "이미지를 삽입하십시오."라는 메시지가 표시됩니다. –