0

アプリケーションを実行しているときに、メモリの問題によりアクティビティが強制終了されます。

アクティビティで startActivityForResult() メソッドを呼び出してカメラを起動しています。呼び出し元のアクティビティがバックグラウンドで強制終了されると、異常な動作が発生します。onRestoreInstance() に入った後、インテントが結果とともに onActivityResult() に戻る場合があります。ただし、onRestoreInstance() に入った後に onActivityResult() に入らない場合もあります。

この動作が発生する理由を説明してください。

4

1 に答える 1

0

このコードを使用して新しいアクティビティを実行できます

        Intent i = new Intent(this, DatabaseEditor.class);
        //You may pass value on another activity
        i.putExtra("xCoordinate", String.valueOf(o));
        i.putExtra("yCoordinate", String.valueOf(p));
        i.putExtra("scale", scaleTest);

        startActivity(i);   

次に onActivityResult をオーバーライドします

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

    if (requestCode == 1) {

        if (resultCode == RESULT_OK) {

            // Write your code on result ok return
        }
        if (resultCode == RESULT_CANCELED) {
            // Write your code on no result return
        }
    }
}

新しいアクティビティでは、このコードを使用して渡された値を取得できます

    Bundle b = getIntent().getExtras();
    if (b != null) {
        editTextX.setText(String.valueOf(b.getString("xCoordinate")));
        editTextY.setText(String.valueOf(b.getString("yCoordinate")));
        editTextScale.setText(Float.toString(b.getFloat("scale")));
    }

前のアクティビティに戻りたい場合は、finish(); を呼び出すだけです。

 //if you want to pass a value from this activity to you mainActivity use this  
            Intent returnIntent = new Intent(
        "com.example.activity.MainActivity");
            returnIntent.putExtra("id", streetID.intValue());
            setResult(RESULT_OK, returnIntent);
            finish();

使用した setResult(RESULT_OK, returnIntent); を設定したので、次に、あなたのコード

        if (resultCode == RESULT_OK) {

            // Write your code on result ok return
        }

処刑される..乾杯!!! :D

于 2013-02-08T05:21:22.460 に答える