【问题标题】:onbackpressed for gallery intent ,Androidonbackpressed 用于画廊意图,Android
【发布时间】:2013-10-11 05:15:01
【问题描述】:

在我的应用程序中,我使用 startactivity 从图库中选择图像作为结果。我的代码如下

GALLERY.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("image/*");
            startActivityForResult(intent, 0 );

        }
    });

一切正常,但问题是,当我在图库中按下返回按钮时,我的应用程序将关闭并返回主屏幕。对于正常活动,有一个名为 OnbackPressed 的方法来处理后退按钮。但是我如何在 Gallery 活动中实现这一点。

【问题讨论】:

    标签: android button android-activity gallery back-button


    【解决方案1】:

    BackButton有两种处理方式

    1)

    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                // Do Some thing Here
                return false;
            }
            return super.onKeyDown(keyCode, event);
        }
    

    2)

        @Override
        public void onBackPressed() {
            // Do Some thing Here
            super.onBackPressed();
    
    }
    

    【讨论】:

    • 请注意,如果您不想关闭,则不应调用 super.onBackPressed。您可能需要制定一些逻辑来确定何时调用超级。
    • 我也更喜欢使用 onBackPressed,这样键盘或硬件配置中可能发生的任何奇怪的事情都会得到处理。
    • 我的问题是,我在哪里使用这个 onbackpressed 按钮。此方法适用于正常活动。但是我如何在 onstaractivityforresult 中使用它。
    • 当我进入手机图库时,当我按下返回按钮时。我离开了应用程序。我的意思是它会关闭应用程序。
    • 哦,我还以为是你自己的自定义图库实现。您无法更改其他应用的运行方式。
    【解决方案2】:

    您需要使用 ACTION_PICK 意图:

        Intent intentImage = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intentImage, RESULT_LOAD_IMAGE);
    
    
        @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case RESULT_LOAD_IMAGE:
            if (resultCode == RESULT_OK && null != data) {
                   Uri selectedImage = data.getData();
                   String[] filePathColumn = { MediaStore.Images.Media.DATA };
                   Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
                   cursor.moveToFirst();
                   int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                   Path = cursor.getString(columnIndex);
                   setImage(Path);
                   Toast.makeText(this, "File Clicked: "+picturePath, Toast.LENGTH_SHORT).show();
                   cursor.close();
               }  
            break;
    

    【讨论】:

      【解决方案3】:

      围绕意图进行尝试和捕捉帮助了我。如果出现异常,比如按下后退按钮,我打算回到之前的活动。

      【讨论】:

        【解决方案4】:

        请先处理结果代码,再处理请求代码

        if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_FROM_CAMERA) {
            //your code
        } 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-16
          • 1970-01-01
          • 2019-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多