0

あるアクティビティから別のアクティビティに値を渡したい。

A -> B ->Aここで、A が主な活動です。このコードは動作していますが、動作してB->AいませんA->B

これはアクティビティ A のコードです

class ChangeTextStyleTouchListener implements OnClickListener
{
    @Override
    public void onClick(View view) {
   int request_code = 101;

        Intent intent = new Intent().setClass(context, ColorPickerActivity.class);

         intent.putExtra("colorCode", addText.getTextColors());
         intent.putExtra("fontSize", addText.getTextSize());

         startActivityForResult(intent,request_code);        }
}

これはアクティビティBの私のコードです

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


    findViewById(R.id.btnAddSize).setOnClickListener((OnClickListener) new addTouchListener());
    findViewById(R.id.btnMinusSize).setOnClickListener((OnClickListener) new minusTouchListener());

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        int color = extras.getInt("colorCode");
        colorPicker.setColor(color);

        int size = extras.getInt("fontSize");
        colorPicker.setSize(size);
    }
}

extrasはヌルです。

4

2 に答える 2

0
// try this
**Class A**
call B with pass extra        
Intent intent = new Intent().setClass(context, B.class);
intent.putExtra("colorCode", addText.getTextColors());
intent.putExtra("fontSize", addText.getTextSize());
startActivityForResult(intent,request_code);

result from B
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==RESULT_OK){
            if(requestCode==request_code){
                int color = data.getIntExtra("colorCode", 0);
                colorPicker.setColor(color);
                int size = data.getIntExtra("fontSize", 0);
                colorPicker.setSize(size);
            }
        }
}

**Class B**
getting extra from A
int color = getIntent().getIntExtra("colorCode",0);
colorPicker.setColor(color);
int size = getIntent().getIntExtra("fontSize",0);
colorPicker.setSize(size);

pass result to A
Intent intent = new Intent(context,A.class);
intent.putExtra("colorCode", addText.getTextColors());
intent.putExtra("fontSize", addText.getTextSize());
setResult(RESULT_OK,intent);
finish();
于 2013-11-11T08:50:49.177 に答える
0

あなたはあなたのコードでほとんどそこにいます。結果のアクティビティを開始していBます。つまり、から押し戻すと、アクティビティで結果Bが得られますA。ここで欠けているのは、何も返さないことだけです。あなたsetResult()は活動Bに参加し、あなたが返したいものに関して追加を設定する必要があります. また、返される結果は .. のメソッドでB利用できます。そのため、要件に応じて必ずオーバーライドしてください。onActivityResult()A

于 2013-11-11T09:05:42.393 に答える