перенаправление на основной вид деятельности при нажатии на панели действий кнопку возврата фрагментов - PullRequest
0 голосов
/ 06 июня 2018

Этот проект связан с картой.Здесь, после входа в систему, он перенаправляется на карту активности.Я рассматриваю картографическую деятельность как основной вид деятельности здесь.Есть навигационный ящик, и для каждой опции (профиль, настройки, помощь ...) в нем я использую фрагменты.

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

Активность картыне поддерживается в панели навигации.

Карта Activity.java

protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    mSearchText = (AutoCompleteTextView) findViewById(R.id.input_search);
    mGps = (ImageView) findViewById(R.id.ic_gps);
    mInfo=(ImageView) findViewById(R.id.place_info);
    btnFindPath = (Button) findViewById(R.id.btnFindPath);

    mDrawerlayout= (DrawerLayout) findViewById(R.id.drawer);
    mToggle= new ActionBarDrawerToggle(this,mDrawerlayout,R.string.open,R.string.close);
    mDrawerlayout.addDrawerListener(mToggle);
    mToggle.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    NavigationView nvDrawer = (NavigationView) findViewById(R.id.nv);
    setupDrawerContent(nvDrawer);

    getLocationPermission();
}


public void selectIterDrawer(MenuItem menuItem){
    Fragment myFragment=null;
    Class fragmentClass;
    switch (menuItem.getItemId()){
        case R.id.profile:
            fragmentClass = Profile.class;
            break;
        case R.id.search:
            fragmentClass = Search.class;
            break;
        case R.id.help:
            fragmentClass = Help.class;
            break;
        case R.id.settings:
            fragmentClass = Settings.class;
            break;
        case R.id.logout:
            fragmentClass = Logout.class;
            break;
        default:
            fragmentClass = Profile.class;
    }

    try {
        myFragment = (Fragment) fragmentClass.newInstance();
    }
    catch (Exception e){
        e.printStackTrace();
    }
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction().replace(R.id.flcontent,myFragment).commit();
    menuItem.setChecked(true);
    setTitle(menuItem.getTitle());
    mToggle.setDrawerIndicatorEnabled(false);
    mDrawerlayout.closeDrawers();
}

private void setupDrawerContent(NavigationView navigationView){
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            selectIterDrawer(item);
            return true;
        }
    });
}

@Override
public boolean onOptionsItemSelected(MenuItem item){
    if (mToggle.onOptionsItemSelected(item)){
        return true;
    }
    return super.onOptionsItemSelected(item);
}

profile.java (фрагмент)

   public static Profile newInstance(String param1, String param2) {
    Profile fragment = new Profile();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);

    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_profile, container, false);
}

// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
    if (mListener != null) {
        mListener.onFragmentInteraction(uri);
    }
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);

}

@Override
public void onDetach() {
    super.onDetach();
    mListener = null;
}


public interface OnFragmentInteractionListener {
    // TODO: Update argument type and name
    void onFragmentInteraction(Uri uri);
}

}

1 Ответ

0 голосов
/ 12 июня 2018

Я думаю, вам придется снова вызывать основное действие для нажатия кнопки "Назад".

Определить метод для запуска действия и вызвать его в методе onOptionItemSelected ().как ..

public void onBackPressed(){
   Intent  i=new Intent(this,Mainactivity.class)
   startActivity(intent);
   finish();
} 

public boolean onOptionItemSelected(MenuItem item){
   if(item.getItemID()==android.R.id.home){
        onBackPressed();
        return true;
   }
   return super.onOptionsItemSelected(item);
}

Я не уверен, это может быть полезно ...

...