2016-07-21 3 views
0

Я хочу добавить назад навигацию к панели инструментов. Мне нужно получить от фрагмента в активности к определенному фрагменту в другой активности.Как перемещаться из фрагмента в одном действии, чтобы фрагментировать в другом действии?

Это выглядит немного как это, где каждая оранжевая линия означает навигацию к новой деятельности или фрагменту:

enter image description here

Как перейти от фрагмента к фрагменту B А из OtherActivity?

+0

А фрагменты A и B занимают весь экран в их действиях? И это только фрагменты, которые показаны в этих действиях? – Marat

+0

Вы пробовали код? –

+0

Пробовали ли вы события или интерфейс/ – Eenvincible

ответ

1

Рассмотрим следующие шаги:

От Activity 1 удерживающие Fragment А, вы хотите для прямой загрузки Fragment B в Activity 2.

Теперь, я думаю сначала, затем вы нажимаете кнопку в Fragment A, вы можете прямо перейти на Activity B.

Тогда это означает, что вы можете просто загрузить Fragment B как только вы приедете в Activity 2.

Поскольку вы имеете дело с задней навигацией (? Я полагаю, вы имеете в виду upNavigation), вы можете изменить следующее:

Но ясно смотреть, потому что, если вам необходимо загрузить точный фрагмент в деятельности 2, вы должны знать, как-то:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

     case android.R.id.home: 
      Intent intent = new Intent(this, Activity2.class); 
      intent.putExtra("frag", "fragmentB"); 
      startActivity(intent); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 

} 

Как вы можете видеть, когда вы нажимаете на стрелку на панели инструментов, мы переходим ценность благодаря нашему намерению идентифицировать фрагмент, который мы хотим загрузить.

Далее в вашем Activity2, просто получить intent extra и сделать переключатель или if statement:

@Override 
public void onResume(){ 
    super.onResume(); 

    Intent intent = getIntent(); 

    String frag = intent.getExtras().getString("frag"); 

    switch(frag){ 

    case "fragmentB": 
     //here you can set Fragment B to your activity as usual; 
     fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentB()).commit(); 
     break; 
    } 
} 

здесь, вы должны иметь свой фрагмент В показе в деятельности 2.

Теперь вы можете обрабатывать то же самое, в то время как внутри действия 2 решать, куда идти, когда пользователь нажимает на стрелку домой!

Надеюсь, это поможет вам получить представление.

Примечание: Я думал о интерфейсном подходе и понял, что это не обязательно, так как это легко сделать с помощью этого подхода!

+0

Когда я это сделаю, я получаю сообщение об ошибке: –

+0

Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String android.os.Bundle.getString (java.lang. String) 'на ссылке нулевого объекта. @Eenvincible. Кстати, мне очень нравятся ваши приложения, я смотрел на них в игровом магазине! –

+0

Привет, Том; позвольте мне помочь вам в этом; вы видите, что вы должны убедиться, что цель не является нулевой первой внутри onResume; мы можем поболтать, если вам нужна дополнительная помощь. – Eenvincible

-1

Используйте этот код, чтобы изменить ваш фрагмент

fragmentManager.beginTransaction().replace(R.id.container_body, new FragmentC()).commit(); 

и показать навигации на пользовательской панели инструментов добавьте

Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar); 
    ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); 
    ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true) 
    ((AppCompatActivity)getActivity()).getSupportActionBar().setHomeButtonEnabled(true); 
Смежные вопросы