按钮的初始目标是允许用户将图像保存到图像查看器中。这有效,但我使用的方法将图像存储到图像查看器中。
当按下另一个按钮时,我不允许将图像保存到另一个图像查看器中。
我在考虑使用 if 语句:
if (button is pressed) {
code runs
} else if (button pressed) {
code runs
} ...
但我不知道如何为Android做这件事。
请有人帮我这个。
public class gallery extends AppCompatActivity {
ImageView image1;
Integer Ask_for_camera = 2, file = 1;
Button btnimage1;
Button btnimage2;
EditText ettext1;
private FirebaseAuth auth;
private FirebaseDatabase firebaseDatabase;
private DatabaseReference gallerytext;
private HashMap<String,String>savedtext;
Button btntext1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
image1 = (ImageView) findViewById(R.id.image1);
btnimage1 = (Button) findViewById(R.id.btnimage1);
btnimage2 = (Button) findViewById(R.id.btnimage2);
ettext1 = (EditText) findViewById(R.id.ettext1);
btntext1 = (Button) findViewById(R.id.btntext1);
btntext1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
savetext();
}
});
btnimage1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
image1();
}
});
btnimage2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
image1();
}
});
initialise();
}
public void savetext() {
savedtext = new HashMap<String,String>();
savedtext.put("gallerytext", ettext1.getText().toString());
gallerytext.child(auth.getCurrentUser().getUid()).setValue(savedtext);
}
public void initialise() {
auth = FirebaseAuth.getInstance();
firebaseDatabase = FirebaseDatabase.getInstance();
gallerytext = firebaseDatabase.getReference("savedtext");
}
private void image1() {
final CharSequence[] items = {"Camera", "From Gallery", "Cancel"};
AlertDialog.Builder Builder = new AlertDialog.Builder(gallery.this);
Builder.setTitle("Click to add image");
Builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int option) {
if (items[option].equals("Camera")) {
Intent in = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(in, Ask_for_camera);
} else if (items[option].equals("From Gallery")) {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/");
startActivityForResult(intent.createChooser(intent, "Select a File"), file);
} else if (items[option].equals("Cancel")){
dialogInterface.dismiss();
}
}
});
Builder.show();
}
@Override
public void onActivityResult(int requestcode, int resultcode, Intent data) {
super.onActivityResult(requestcode, resultcode, data);
if (resultcode == Activity.RESULT_OK) {
if (requestcode == Ask_for_camera) {
Bundle b = data.getExtras();
final Bitmap bm = (Bitmap) b.get("data");
image1.setImageBitmap(bm);
} else if (requestcode == file) {
Uri imageselected = data.getData();
image1.setImageURI(imageselected);
}
}
}
}
答案 0 :(得分:0)
在onCreate()之前声明两个布尔变量:
private boolean isButton1Clcik= false;
private boolean isButton2Clcik= false;
现在根据按钮点击()更新变量:
btnimage1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
isButton1Clcik= true;
image1();
}
});
btnimage2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
isButton2Clcik=true;
image1();
}
});
用以下代码替换onActivityResult:
@Override
public void onActivityResult(int requestcode, int resultcode, Intent data){
super.onActivityResult(requestcode, resultcode, data);
if (resultcode == Activity.RESULT_OK) {
if(isButton1Clcik){
if (requestcode == Ask_for_camera){
Bundle b = data.getExtras();
final Bitmap bm = (Bitmap) b.get("data");
image1.setImageBitmap(bm);
}else if (requestcode == file){
Uri imageselected = data.getData();
image1.setImageURI(imageselected);
}
isButton1Clcik=false;
} else if(isButton2Clcik){
if (requestcode == Ask_for_camera){
Bundle b = data.getExtras();
final Bitmap bm = (Bitmap) b.get("data");
image2.setImageBitmap(bm);
}else if (requestcode == file){
Uri imageselected = data.getData();
image2.setImageURI(imageselected);
}
isButton2Clcik=false;
}//end of check Button 2 click
}//end of check resultCode
}
注意:image2是第二个图像视图的对象,代码中没有image2!