2015-06-04 3 views
1

Я работаю над андроидным приложением, в котором я передаю данные из Activity 2 в Activity 1. Я передаю это через намерение. Проблема в том, что в Activity 1 он показывает значение в пакете, но когда я использую bundle.getString("");, он показывает мне нулевое значение. При отладке я получаю пакет Bundle[{list_size=3}]. Мой код приведен ниже, пожалуйста, помогите мне здесь.Bundel.getString ("") at onActivityResult() дает значение null

активность 1:

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

     if(resultCode==105){ 
      TextView txtCounter = (TextView) findViewById(R.id.txtCounter); 
// It showing value at MBuddle, but at MBuddle it is showing null. 
      Bundle MBuddle = data.getExtras(); 
      String MMessage = MBuddle .getString("list_size"); 
      txtCounter.setText(MMessage); 
     } 
} 

активность 2:

@Override 
    public void onBackPressed() { 
     int REQUEST_CONTACTS = 105; 
     Intent intent = new Intent(); 
     intent.putExtra("list_size", fListContacts.size()); 
     setResult(REQUEST_CONTACTS, intent); 
     finish(); 
    } 

ответ

1

Здесь вы должны использовать getIntent() .. изменить свой код, как это

Intent intent = new Intent(); 

к

Intent intent = geIntent(); 

Activity1

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

    if(resultCode==105){ 
     TextView txtCounter = (TextView) findViewById(R.id.txtCounter); 
     // It showing value at MBuddle, but at MBuddle it is showing null. 
     Bundle MBuddle = data.getExtras(); 
     String MMessage = MBuddle .getString("list_size"); 
     txtCounter.setText(MMessage); 
    } 
} 

деятельности2

@Override 
public void onBackPressed() { 
    int REQUEST_CONTACTS = 105; 
    Intent intent = getIntent(); 
    intent.putExtra("list_size", fListContacts.size()); 
    setResult(REQUEST_CONTACTS, intent); 
    finish(); 
} 
+0

спасибо за ваш ответ здесь, но до сих пор он не работает. Не могли бы вы дать мне немного фрагмента кода и намек здесь, это будет очень полезно для меня. –

+0

попробуйте сейчас .. я обновил свой код. –

+0

спасибо за ваш ответ дорогой. Но все же он не работает. Здесь он дает мне такое же значение. –

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

if (requestCode == REQUEST_CODE) { 
       if (resultCode == Activity.RESULT_OK) { 
        String contents = intent.getStringExtra(Intents.Scan.RESULT); 
       }} 
} 

===============

  Intent intent = new Intent(getIntent().getAction()); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
      intent.putExtra(KEY, data); 
      setResult(RESULT_OK, intent); 
      finish(); 

RESULT_OK может быть значение INT

0

Вы должны попробовать c укажите свою активность 1, как показано ниже. Это может быть потому, что fListContacts.size() возвращает значение int:

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

    if(resultCode==105){ 
     TextView txtCounter = (TextView) findViewById(R.id.txtCounter); 
     Bundle MBuddle = data.getExtras(); 
     String MMessage = String.valueOf(MBuddle.getInt("list_size")); 
     txtCounter.setText(MMessage); 
    } 
} 

и в деятельности 2 изменения new Intent() к getIntent()