【问题标题】:Displaying images in an imageviewer在图像查看器中显示图像
【发布时间】:2018-02-11 19:10:21
【问题描述】:

按钮的初始目标是允许用户将图像保存到图像查看器中。这可行,但我使用的方法将图像存储到图像查看器中。

当按下另一个按钮时,它不允许我将图像保存到另一个图像查看器中。

我正在考虑使用 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);
            }    
        }
    }

}

【问题讨论】:

    标签: android android-button


    【解决方案1】:

    在onCreate()之前声明两个布尔变量:

    private boolean isButton1Clcik= false;
    private boolean isButton2Clcik= false;
    

    现在根据按钮 click() 更新变量:

    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!

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多