【问题标题】:Requestcode and Resultcode handling for different modules不同模块的 Requestcode 和 Resultcode 处理
【发布时间】:2016-07-18 06:48:05
【问题描述】:

在我的 android 应用程序中,我有“imageselect”模块来从图库或相机捕获的图像中选择图像,以及“app”模块来处理和显示它。对于不同的请求代码我做了

public static final int REQUEST_CODE_PHOTO = 2000;
public static final int REQUEST_CODE_CAMERA = 2006;

在 imageselect 模块活动中完美获取请求代码和结果代码

两个选项的启动活动结果

//to choose gallery image 
Intent intent = new Intent(getApplicationContext(), ImageSelectActivity.class);
intent.putExtra(Constants.INTENT_EXTRA_ALBUM, albums.get(position).name);
startActivityForResult(intent, Constants.REQUEST_CODE_PHOTO); 


// to capture camera image     
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, Constants.REQUEST_CODE_CAMERA);

OnActivity 结果:

if(requestCode == Constants.REQUEST_CODE_PHOTO && resultCode == RESULT_OK && data != null) {
        setResult(RESULT_OK, data);
        finish();
        Toast.makeText(AlbumSelectActivity.this,"Calling ALbum IF",Toast.LENGTH_SHORT).show();
    }else if(requestCode == Constants.REQUEST_CODE_CAMERA && resultCode == RESULT_OK && data != null){
        setResult(RESULT_OK, data);
        finish();
        Toast.makeText(AlbumSelectActivity.this,"Calling ALbum ELSE IF",Toast.LENGTH_SHORT).show();
    }

直到它工作正常。在我的应用程序模块活动中总是得到相同的请求代码。总是得到 2000,这是照片请求代码。

App 模块 MainActivity onActivityResult:

if (resultCode == RESULT_OK) {
        if (requestCode == Constants.REQUEST_CODE_PHOTO && data != null) {
           // always getting 'REQUEST_CODE_PHOTO' so this block is working 

        } else if (requestCode == Constants.REQUEST_CODE_CAMERA && data != null) {
            // this block never called even when 'REQUEST_CODE_CAMERA' passed 
        }
    }

【问题讨论】:

    标签: android onactivityresult startactivityforresult


    【解决方案1】:

    试试这个App模块MainActivity onActivityResult

    if (resultCode == RESULT_OK) {
            if (requestCode == Constants.REQUEST_CODE_PHOTO && data != null) {
               // always getting 'REQUEST_CODE_PHOTO' so this block is working 
    
            } else if(requestCode == Constants.REQUEST_CODE_CAMERA && data != null) {
                // this block never called even when 'REQUEST_CODE_CAMERA' passed 
            }else{}
        }
    

    对于OnActivity结果

    if(requestCode == Constants.REQUEST_CODE_PHOTO && resultCode == RESULT_OK && data != null) {
            setResult(RESULT_OK, data);
            finish();
            Toast.makeText(AlbumSelectActivity.this,"Calling ALbum IF",Toast.LENGTH_SHORT).show();
        }else if(requestCode == Constants.REQUEST_CODE_CAMERA && resultCode == RESULT_OK && data != null){
            setResult(RESULT_OK, data);
            finish();
            Toast.makeText(AlbumSelectActivity.this,"Calling ALbum ELSE IF",Toast.LENGTH_SHORT).show();
        }else{}
    

    【讨论】:

    • 你不能把条件放在其他地方,所以它甚至会如何工作?否则我总是得到相同的请求代码,这就是问题
    猜你喜欢
    • 2016-01-27
    • 2012-06-07
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2022-10-04
    • 2015-10-31
    相关资源
    最近更新 更多