2013-11-11 5 views
0

Я хочу передать значение из одной активности в другую.Передать значение из одной активности в другую

A -> B ->A, где A является основным видом деятельности. Этот код работает с B->A, но не в A->B

это мой код для деятельности

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 равна нулю.

+0

Почему у вас есть 2 'onCreate()' в действии B? –

+0

Извините, я отредактировал мой код – MMakati

ответ

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(); 
+0

I Получил эту ошибку. java.lang.RuntimeException: Не удается запустить Activity ComponentInfo {com.example.poc/com.example.poc.ColorPickerActivity}: java.lang.NullPointerException – MMakati

+0

не могли бы вы показать мне код ColorPickerActivity? –

0

Вы почти здесь с кодом. Вы начинаете деятельность B для получения результата .. это означает, что если вы нажмете обратно с B, вы получите результат в действии A. Единственное, что здесь отсутствует, это то, что вы ничего не возвращаете. Вам нужно setResult() в действии B и установить дополнительные сведения о том, что вы хотите вернуть. Также результат, который вы возвращаете с B, будет доступен в onActivityResult() методе в A .. Поэтому не забудьте переопределить его в соответствии с вашими требованиями.

Смежные вопросы