“我的选择”按钮的确打开了媒体库,但是当我选择图像时,该按钮保持不变,即“选择”
它应该更改为“已选择图像”,但是不会!所以我无法上传确实将它们添加到清单文件中的图像:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
我不知道该怎么办 请帮忙!
这是我的Home.Java
public class Home extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
TextView txtFullName;
FirebaseDatabase database;
DatabaseReference categories;
FirebaseStorage storage;
StorageReference storageReference;
FirebaseRecyclerAdapter<Category, MenuViewHolder> adapter;
RecyclerView recycler_menu;
RecyclerView.LayoutManager layoutManager;
DrawerLayout drawer;
MaterialEditText edtName;
Button btnUpload,btnSelect;
Category newCategory;
Uri saveUri;
private final int PICK_IMAGE_REQUEST=71;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Menu Management");
setSupportActionBar(toolbar);
database=FirebaseDatabase.getInstance();
categories=database.getReference("Category");
storage=FirebaseStorage.getInstance();
storageReference=storage.getReference();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog();
}
});
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
View headerView=navigationView.getHeaderView(0);
txtFullName=(TextView)headerView.findViewById(R.id.txtFullName);
txtFullName.setText(Common.currentUser.getName());
recycler_menu=(RecyclerView)findViewById(R.id.recycler_menu);
recycler_menu.setHasFixedSize(true);
layoutManager=new LinearLayoutManager(this);
recycler_menu.setLayoutManager(layoutManager);
loadMenu();
}
private void showDialog() {
AlertDialog.Builder alertDialog=new AlertDialog.Builder(Home.this);
alertDialog.setTitle("Add new Category");
alertDialog.setMessage("Please fill full Information");
LayoutInflater inflater=this.getLayoutInflater();
View add_menu_layout= inflater.inflate(R.layout.add_new_menu_layout,null);
edtName=add_menu_layout.findViewById(R.id.edtName);
btnSelect=add_menu_layout.findViewById(R.id.btnSelect);
btnUpload=add_menu_layout.findViewById(R.id.btnUpload);
btnSelect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
}
});
btnUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadImage();
}
});
alertDialog.setView(add_menu_layout);
alertDialog.setIcon(R.drawable.ic_shopping_cart_black_24dp);
alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if(newCategory !=null){
categories.push().setValue(newCategory);
Snackbar.make(drawer,"New Category"+newCategory.getName()+"was added ",Snackbar.LENGTH_SHORT).show();
}
}
});
alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
private void uploadImage() {
if(saveUri!=null){
final ProgressDialog mDialog=new ProgressDialog(this);
mDialog.setMessage("Uploading");
mDialog.show();
String imageName= UUID.randomUUID().toString();
final StorageReference imageFolder = storageReference.child("images/"+imageName);
imageFolder.putFile(saveUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
mDialog.dismiss();
Toast.makeText(Home.this, "Image Uploaded", Toast.LENGTH_SHORT).show();
imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
newCategory = new Category(edtName.getText().toString(), uri.toString());
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Home.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress=(100.0* taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
mDialog.setMessage("Uploaded"+progress+"%");
}
});
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==PICK_IMAGE_REQUEST && requestCode==RESULT_OK
&& data != null && data.getData()!=null ) {
saveUri=data.getData();
btnSelect.setText("Image Selected");
//Toast.makeText(this, "Image Selected", Toast.LENGTH_LONG).show();
}
}
private void chooseImage() {
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Image "),PICK_IMAGE_REQUEST);
}
private void loadMenu() {
adapter= new FirebaseRecyclerAdapter<Category, MenuViewHolder>(
Category.class,
R.layout.menu_item,
MenuViewHolder.class,
categories
) {
@Override
protected void populateViewHolder(MenuViewHolder viewHolder, Category model, int position) {
viewHolder.txtMenuName.setText(model.getName());
Picasso.with(Home.this).load(model.getImage())
.into(viewHolder.imageView);
}
};
adapter.notifyDataSetChanged();
recycler_menu.setAdapter(adapter);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
和此类别模型:
package com.example.adminpanel.Model;
public class Category {
private String name;
private String Image;
private Category(){
}
public Category(String name, String image) {
this.name = name;
Image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImage() {
return Image;
}
public void setImage(String image) {
Image = image;
}
}