2011-07-22 7 views
0

私はエクストラ(文字列)をインテントに入れようとしています。私はstartActivityForResultとonActivityResultを使用して、別の側で自分のエキストラを取得します。アンドロイドアプリでインテントエクストラを取得できません

しかし、私はそれが動作しない理由を得ることはできません!ここに私のコードは次のとおりです。

buttonCamera.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      intent.putExtra("abc", "test"); 
      startActivityForResult(intent, PHOTO_RESULT); 

     } 
    }); 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PHOTO_RESULT) { 
     if (resultCode == RESULT_OK) { 

      Bundle extras = data.getExtras(); 
      if (extras != null) { 
       String abc = extras.getString("abc"); 
       Toast.makeText(getApplicationContext(), abc, Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(getApplicationContext(), "can't get", Toast.LENGTH_SHORT).show(); 
      } 

     } 
    } 
} 

余分がnullではないので、私はいつも、空のトーストを取得..しかし、私は文字列..

感謝を取得cant't!

答えて

0

編集:

File mFile = new File(path, filename); 
final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mFile)); 
activity.startActivityForResult(intent, TAKE_PHOTO_CODE); 

カメラの活動は、あなたの余分な意思データを取得しますが、それはその「ABC」の文字列を返しません: は、ファイル名は、あなたがこれを使用することができ、カメラを伝えるために。カメラの動作に「abc」と返すように指示することはできません。あなたはそのabc文字列で何をしようとしていますか?

+0

私はいくつかの"テスト "をしますが、最終的には自分のイメージが保存されるファイルのパスになります。だから私はこの意図で文字列を送信しようとしています。 – beluga

+0

私の答えにコードを使用してください。ファイル名はクラス変数として保存できます。 – Vector

+0

ありがとう!それは今うまく動作:) – beluga

0

明らかに空のトーストがあります。 新しいIntent(MediaStore.ACTION_IMAGE_CAPTURE)のインテントを追加していますが、onActivity結果に表示されるIntentデータが(Camera Activityから返された)異なっています。 クラス変数に値を格納すると正常に動作します。

+0

私はそれが別のものであると理解していません。私たちがonActivityResultのパラメータで持っている意図は、先に呼ばれた意図ですか? – beluga

+0

クラス変数を使用するだけです。主なアクティビティで、 'onCreate()'メソッドの前に 'public String abc'を追加してください。後で 'MainActivity.abc =" test ";で変更することができます。 – Rob

0
package com.sachin.cameracapture; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 

    Button btnTakePhoto; 
    ImageView imgTakenPhoto; 
    private static final int CAM_REQUREST = 1313; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btnTakePhoto = (Button) findViewById(R.id.button1); 
     imgTakenPhoto = (ImageView) findViewById(R.id.imageView1); 

     btnTakePhoto.setOnClickListener(new btnTakePhotoClicker()); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 

      if (requestCode == CAMERA_PIC_REQUEST) { 
       Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
       imgTakenPhoto.setImageBitmap(thumbnail); 
      } 
    } 

    class btnTakePhotoClicker implements Button.OnClickListener 
    { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
     } 
    } 
} 
関連する問題