1

インテントカメラに追加データを入れたいのですが、それは簡単に思えます...

数日前は機能していましたが、コード、avd、およびターゲット バージョンに多くの変更を加えましたが、現在は機能していません。

プロジェクトのターゲット バージョンは 11 になりました。

実際、私の目標は、データベースからIDを渡して画像名を作成することですが、ここでは私の問題を説明する簡単なコードを示します。

サンプルコードは次のとおりです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".CameraTestActivity" >

    <Button
        android:id="@+id/buttonpic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="76dp"
        android:text="Button" />

</RelativeLayout>

-

public class CameraTestActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_camera_test);

        Button buttonpic = (Button)findViewById(R.id.buttonpic);
        buttonpic.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
                ///first try to put extra data
                cameraIntent.putExtra("thisone", "ArgumentFrom");

                ///second try to put extra data
                Bundle extras = new Bundle();
                extras.putBoolean("thisalso",true);
                cameraIntent.putExtras(extras);

                ///start camera activty with ID
                startActivityForResult(cameraIntent, 1888); 
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  

        ///if pic is picked and Intent ID is Camera one i.e. 1888
        if (requestCode == 1888 && resultCode == RESULT_OK) {

            ///first try >> Not working
            Bundle extra = getIntent().getExtras();////
            if (extra != null) {
                Log.d("extra: ","isnotnull");
                Boolean inputThatIwant = extra.containsKey("thisone");
                Boolean inputThatIwantBool = extra.containsKey("thisalso");
                Log.d("thisone",inputThatIwant.toString());
                Log.d("thisalso",inputThatIwantBool.toString());
            }

            ///Second try >>  Some Data is back (pic data... ?)
            Bundle extras = data.getExtras();
            if (extras != null) {
                Log.d("extras: ","isnotnull"); /////-->>Print "isnotnull"
                Boolean inputThatIwant = extras.containsKey("thisone");
                Boolean inputThatIwantBool = extras.containsKey("thisalso");
                Log.d("thisone",inputThatIwant.toString()); /////-->>Print "false"
                Log.d("thisalso",inputThatIwantBool.toString()); /////-->>Print "false"
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.camera_test, menu);
        return true;
    }
}

[編集] ここで、最終的にこれをどのように処理するか、おそらく誰かを助けることができます...

同じクラス内で自分の ID を「共有」するだけです。

private String inputid;

カメラ要求によって呼び出されると、inputid 文字列に id を入力します。明らかに OnresultActivity では、この文字列を null にすることはできないため、同じように簡単に機能します...

しかし、誰かがより良い解決策を持っているなら、私はそれを取ります!

よろしく....

4

1 に答える 1