2016-02-19 4 views
0

Я хочу, чтобы иметь возможность отправлять данные из Activity 2 в Activity 1 с помощью кнопки «Назад» или кнопки «Действие».Отправка данных с помощью панели действий [Android]

Вот как я настроил свою кнопку назад в деятельности 2:

@Override public void onBackPressed() { 
    String[] userArray = getIntent().getExtras().getStringArray("userArray"); 
    Log.d("Returning user data:", Arrays.toString(userArray)); 
    Intent intent = new Intent(); 
    intent.putExtra("userArray", userArray); 
    setResult(RESULT_OK, intent); 
    finish(); 
} 

А вот как я получаю его в деятельности 1:

@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 1) { 
     if(resultCode == getActivity().RESULT_OK){ 
      String[] userArray = data.getExtras().getStringArray("userArray"); 
      Log.d("Retained user data:", Arrays.toString(userArray)); 
}}} 

Вот как я пытался создание моего домашнего выбора в деятельности 2:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    if (id == android.R.id.home){ 
     Toast.makeText(getApplicationContext(), "Saving User Info", Toast.LENGTH_SHORT).show(); 
     super.onBackPressed(); 
    } 

    return super.onOptionsItemSelected(item); 
} 

странная вещь - тост работает, но называя onbackpres sed функция нет. Какие-либо предложения?

ответ

1

Попробуйте это Вам не хватает return true;

if (id == android.R.id.home){ 
    Toast.makeText(getApplicationContext(), "Saving User Info", Toast.LENGTH_SHORT).show(); 
    String[] userArray = getIntent().getExtras().getStringArray("userArray"); 
    Log.d("Returning user data:", Arrays.toString(userArray)); 
    Intent intent = new Intent(); 
    intent.putExtra("userArray", userArray); 
    setResult(RESULT_OK, intent); 
    finish(); 
    return true; 
} 
+0

нет удачи к сожалению: \ – NBC

+0

i обновил мой ответ попробуйте это –

+0

awesome, спасибо! Не понял, насколько простым было решение: P – NBC

0

Не звоните super.onBackPressed(). Позвоните просто onBackPressed() в свой метод onOptionsItemSelected (...). С помощью вашего текущего вызова вы явно вызываете реализацию суперкласса.

+0

Ах, я должен отметить, что не работает. Также не копирует код из onBackPressed в onOptionsItemSelected – NBC

0

Могу ли я узнать, как вы называете Activity2 в своем классе Activity1?

вы должны вызвать деятельности2 как этот

Intent i = new Intent(Activity1.this, Activity2.class); 
startActivityForResult(i, 1); 
Смежные вопросы