【问题标题】:getting extra in activityForResult在活动中获得额外的结果
【发布时间】:2014-11-04 18:39:59
【问题描述】:

我一直在用谷歌搜索,但到目前为止还没有运气。 我有一个应用程序,我在其中启动了一个 ActivityForResult 并在其中添加了一个额外的字符串。

编辑 因为我在桌子上,所以我无法发布复杂的代码,我刚拿到笔记本电脑,所以这里是代码

ActivityForResult:

@Override
protected void onCreate(Bundle saved) {
    super.onCreate(saved);
    setContentView(R.layout.camera);
    a = new AQuery(this);
    output = getIntent().getExtras().getString("output");//Here, nothing is passed!!!!!!!!
    //Log.d("out",output);
    /** Check if this device has a camera */
    if (this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)){
        text ="yes";
         //now we check the cam features
        if(this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT))
            front ="yes";
        if(this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))
            flash = "yes";
        if(this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA))
            back= "yes";
    }else{
            text = "This device does not have a camera";
            //---set the data to pass back---
            data.putExtra("vid",text);
            setResult(RESULT_OK, data);
             //---close the activity---
             finish();
    }
    if (c != null) {
        c.release();
        c = null;
    } 
    m = new MediaRecorder();
    c = getCameraInstance(this);

    Camera.Parameters parameters = 
            c.getParameters();

    // Create our Preview view and set it as the content of our activity.
    mPreview = new CameraPreview(this, c);
    int orien =getResources().getConfiguration().orientation;
    if(orien ==1){
        parameters.setRotation(0); // set rotation to save the picture
        c.setDisplayOrientation(90);
        parameters.setPictureSize(640, 480);
        PIC_ORIENTATION = "landscape";
    }else{
        parameters.setRotation(0); // set rotation to save the picture
        c.setDisplayOrientation(0);
        parameters.setPictureSize(640, 480);
        PIC_ORIENTATION = "portrait";
    }
    if (Camera.getNumberOfCameras() < 2) {
        //TODO
    }
    fileUri = getOutputMediaFileUri();
    c.setParameters(parameters);
    m.setCamera(c);
    FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
    preview.addView(mPreview);
}

以及启动意图

cam.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View v) {
                    Intent i = new Intent(Mess.this,Cam.class);
                    i.putExtra("output", vids);
                    startActivityForResult(i,2);
                    dialog.cancel();//TODO

                }

            });

没有传递任何值..它只是空... 这是activityForResult...但在刚刚的Activity中,我得到了传递的值。

【问题讨论】:

  • 您试图从哪里检索数据?请发布与这两个活动相关的代码
  • 什么都没有通过? Extras 捆绑包是否为空? getString() 结果是否为空?
  • 为了将来参考,您应该发布更完整的示例代码。特别是,您应该给出包含代码的周围类和方法。
  • startActivityForResult(i,2); 2 是什么意思?
  • 您也可以删除相机代码,因为它与您当前的问题无关。

标签: android android-intent android-activity camera android-camera


【解决方案1】:

你这样做是为了放置价值:

i.putExtra("string","value");

然后你这样做来获取值:

String value = getIntent().getExtras().getString("value");

第二行应该是

String value = getIntent().getExtras().getString("string");

【讨论】:

  • 感谢您的帮助,我的错,我在平板电脑上,所以我匆忙输入代码,我刚刚在笔记本电脑上编辑了我的问题
【解决方案2】:

经过一番当之无愧的休息后,我清理了头脑并查看了代码...问题是我没有初始化输出字符串,因此在将额外内容放入 Intent 时,它是一个未设置的字符串。 .. 现在开始工作了

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多