0

子アクティビティにデータを送信している親アクティビティがありますが、子は結果を返しません。以下に、両方のアクティビティのコードの一部をまとめて投稿しました。不要のために投稿しなかったコードがいくつかあります。

    public class TdeeActivity extends Activity {

    public static final int CALLED_ACTIVITY = 1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tdee);
        Button ok=(Button)findViewById(R.id.btnOk);
        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent bmr= new Intent(TdeeActivity.this,BMRActivity.class);
                startActivityForResult(bmr,CALLED_ACTIVITY);
            }
        });
        }

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

        switch(requestCode) {
        case CALLED_ACTIVITY:
            if (resultCode == RESULT_OK) {

                Toast.makeText(this, "THE RESULT-"+data.getExtras().getString("result"),
                        Toast.LENGTH_SHORT).show();
            }
        }

    }
}  // end class

public class BMRActivity extends Activity{


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_bmr);
       Button btnOk=(Button)findViewById(R.id.btnOk);
       btnOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                showResult();
            }
        });

        public void showResult() {


            Intent data= new Intent();
            data.putExtra("result",result);
            setResult(RESULT_OK, data);
            finish();



    }   



}




}// end class
4

1 に答える 1

0

ダミープロジェクトでコードをテストしましたが、最後は正常に機能していました。両方のアクティビティのコードは次のとおりです。

public class ParentActivity extends Activity {

    private static final int CALLED_ACTIVITY = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent bmr = new Intent(ParentActivity.this, ChildActivity.class);
        startActivityForResult(bmr, CALLED_ACTIVITY);
    }

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

        switch(requestCode) {
        case CALLED_ACTIVITY:
            if (resultCode == RESULT_OK) {

                Toast.makeText(this, "THE RESULT-"+data.getExtras().getString("result"),
                        Toast.LENGTH_SHORT).show();
            }
        }

    }
}


public class ChildActivity extends Activity {

    final Activity activity = this;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Returning result from child activity
        Intent data = new Intent();
        data.putExtra("result", "from child"
                + this.getCallingActivity().getClassName());
        setResult(RESULT_OK, data);
        finish();
    }
}

したがって、問題を見つけることができるように、より多くのコードを投稿してください。

于 2012-10-20T20:28:12.053 に答える