2015-01-02 3 views
0

я имел взглянуть на этот вопрос- Call OnResume when Back Button Pressed when using FragmentsКакой метод вызывается, когда кнопка нажата назад из фрагмента

Я сделал то же самое, как уже упоминалось в ответах, но ни один не onResume называется , ни onCreateView. Это транзакция от операции к фрагменту, все из которых являются частью одной вкладки. Как я могу вызвать метод из первого фрагмента, когда на втором фрагменте нажата кнопка «Назад»?

код-

Bundle data = new Bundle(); 
data.putString("q", code); 
data.putString("type", type); 
data.putString("name", name); 

viewPager.setCurrentItem(1); 
android.support.v4.app.FragmentTransaction transaction = 
     getSupportFragmentManager().beginTransaction(); 
eq equity = new eq(); 
equity.setArguments(data); 
transaction.replace(R.id.root_frame, equity).addToBackStack(null).commit(); 
+0

- кнопка возврата - единственный способ оставить фрагмент? –

+0

@AhmadAlsanie да, это так. –

ответ

0

метод вызывается при нажатии кнопки обратно onOptionsItemSelected

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     onBackPressed(); 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public void onBackPressed() { 
    if (yourCondition = true) { 
     //do something here 
    } else { 
     super.onBackPressed(); 
    } 
} 

Но onOptionsItemSelected вызывается родительской деятельности.

Я не знаю, нужна ли кнопка «назад», но я думаю, что лучше реализовать обратный вызов от одного фрагмента к другому с помощью интерфейса и использовать пользовательскую кнопку, а не кнопку «Назад».

+0

Я думаю, что у вас есть вопрос не так. Мне жаль, что я недостаточно ясна. Я хочу вызвать функцию в действии, а не в фрагменте. Итак, какой метод вызывается в «Деятельности», когда он загружается после нажатия кнопки «Назад»? –

0

Жизненный цикл фрагмента непосредственно связан с жизненным циклом активности хозяина, поэтому вы должны принять это во внимание, если бы вы попытались вызвать метод в onPuase() или в onStart() в фрагменте, который вы направляете после нажатия назад? если это не сработало, попробуйте нажать кнопку возврата эмулятора от if (keyCode == KeyEvent.KEYCODE_BACK) или вы можете сделать finish() предыдущий фрагмент или действие, чтобы кнопка «Назад» не получала пользователя и не создавала свою собственную кнопку возврата, чтобы перенаправить пользователя и заменить метод в нем используя onClick(). Надеюсь, что сработает для вас удача

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