如何为android片段设置onBackPressed()

如何为android片段设置onBackPressed(),android,android-fragments,back-stack,onbackpressed,fragment-backstack,Android,Android Fragments,Back Stack,Onbackpressed,Fragment Backstack,我有11个片段托管在MainActivity.class中,这些片段使用RecyclerView来显示项目。单击这些项时,这些项是可单击的。单击这些项时,将在DetailActivity.class中解析数据。main活动是父活动。 我想实现onBackPressed();这样,当用户单击detail活动中的homeBack按钮时,他们将返回到上一个片段(活动中的上一个位置) 主课 public class MainActivity extends AppCompatActivity imple

我有11个片段托管在MainActivity.class中,这些片段使用RecyclerView来显示项目。单击这些项时,这些项是可单击的。单击这些项时,将在DetailActivity.class中解析数据。main活动是父活动。 我想实现onBackPressed();这样,当用户单击detail活动中的homeBack按钮时,他们将返回到上一个片段(活动中的上一个位置)

主课

public class MainActivity extends AppCompatActivity implements MaterialTabListener, View.OnClickListener, FragmentManager.OnBackStackChangedListener {

    private static final int JOB_ID = 100;
    private Toolbar toolbar;
    private ViewPager mPager;
    private MaterialTabHost mTabHost;
    private SlidingTabLayout mTabs;
    private ViewPagerAdapter adapter;

    public static final int MOVIES_SEARCH_RESULTS = 1;
    public static final int MOVIEE_HITS = 0;
    public static final int MOVIES_UPCOMING = 2;
    public static final int NEWS_OPINION = 3;
    public static final int NEWS_CULTURE = 4;
    public static final int NEWS_BUSINESS = 5;
    public static final int NEWS_LIFESTYLE = 6;
    public static final int NEWS_FASHION = 7;
    public static final int NEWS_ENVIRONMENT = 8;
    public static final int NEWS_TECH = 9;
    public static final int NEWS_TRAVEL = 10;


    public static final int TAB_COUNT = 11;
    private JobScheduler mJobScheduler;
    Realm mRealm;
    FragmentManager mFragmentManager;
    private static final String TAG_SORT_NAME = "sortName";
    private static final String TAG_SORT_DATE = "sortDate";
    private static final String TAG_SORT_RATINGS = "sortRatings";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mJobScheduler = JobScheduler.getInstance(this);
        mRealm = Realm.getDefaultInstance();
        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
        mPager = (ViewPager) findViewById(R.id.pager);
        mPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
        mTabs = (SlidingTabLayout) findViewById(R.id.tabs);
        /*mTabHost = (MaterialTabHost) findViewById(R.id.materialTabHost);*/
        adapter = new ViewPagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(adapter);
        mTabs.setViewPager(mPager);
        mFragmentManager=getSupportFragmentManager();
        mFragmentManager.addOnBackStackChangedListener(this);
        Fragment fragment = new Business();
        // if you don't run on prior to Android 3.0 use getFragmentManager();
        mFragmentManager.beginTransaction().replace(R.id.businessFragment, fragment).addToBackStack(null).commit();
        // R.id.frame_container is the id of FrameLayout in activity_main.xml





    }

    @Override
    public void onBackPressed() {
        if(mFragmentManager.getBackStackEntryCount() == 0){
            finish();
        }else{
            super.onBackPressed();
        }
    }

    public void constructJob() {
        JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(this, MyService.class));
    }

    private void buildFAB() {
        // in Activity Context
        ImageView icon = new ImageView(this); // Create an icon
        icon.setImageResource(R.drawable.ic_action_new);
        FloatingActionButton actionButton = new FloatingActionButton.Builder(this)
                .setContentView(icon)
                .setBackgroundDrawable(R.drawable.selector_button_red)
                .build();

// repeat many times:
        ImageView iconSortName = new ImageView(this);
        iconSortName.setImageResource(R.drawable.ic_action_alphabets);
        ImageView iconSortDate = new ImageView(this);
        iconSortDate.setImageResource(R.drawable.ic_action_calendar);
        ImageView iconSortRatings = new ImageView(this);
        iconSortRatings.setImageResource(R.drawable.ic_action_important);

        // set background for all the buttons
        SubActionButton.Builder itemBuilder = new SubActionButton.Builder(this);
        itemBuilder.setBackgroundDrawable(getResources().getDrawable(R.drawable.selector_sub_button_gray));

        // build the sub buttons
        SubActionButton buttonSortName = itemBuilder.setContentView(iconSortName).build();
        SubActionButton buttonSortDate = itemBuilder.setContentView(iconSortDate).build();
        SubActionButton buttonSortRatings = itemBuilder.setContentView(iconSortRatings).build();

        buttonSortName.setTag(TAG_SORT_NAME);
        buttonSortDate.setTag(TAG_SORT_DATE);
        buttonSortRatings.setTag(TAG_SORT_RATINGS);

        buttonSortName.setOnClickListener(this);
        buttonSortDate.setOnClickListener(this);
        buttonSortRatings.setOnClickListener(this);
        //Add the sub buttons to the main floating action button
        FloatingActionMenu actionMenu = new FloatingActionMenu.Builder(this)
                .addSubActionView(buttonSortName)
                .addSubActionView(buttonSortDate)
                .addSubActionView(buttonSortRatings)

                        // ...
                .attachTo(actionButton)
                .build();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

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

            case R.id.action_settings:
                Toast.makeText(this, "Hey you just hit " + item.getTitle(), Toast.LENGTH_SHORT).show();
                return true;
            case android.R.id.home:
                getSupportFragmentManager().popBackStack();
                return true;

        }



        return onOptionsItemSelected(item);
    }

    @Override
    public void onTabSelected(MaterialTab tab) {
        mPager.setCurrentItem(tab.getPosition());

    }

    @Override
    public void onTabReselected(MaterialTab tab) {

    }

    @Override
    public void onTabUnselected(MaterialTab tab) {

    }

    @Override
    public void onClick(View v) {
        //call instantiate item since getItem may return null depending on whether the PagerAdapter is of type FragmentPagerAdapter or FragmentStatePagerAdapter
        Fragment fragment = (Fragment) adapter.instantiateItem(mPager, mPager.getCurrentItem());
        if (fragment instanceof SortListener) {

            if (v.getTag().equals(TAG_SORT_NAME)) {
                //call the sort by name method on any Fragment that implements sortlistener
                ((SortListener) fragment).onSortByName();
            }
            if (v.getTag().equals(TAG_SORT_DATE)) {
                //call the sort by date method on any Fragment that implements sortlistener
                ((SortListener) fragment).onSortByDate();
            }
            if (v.getTag().equals(TAG_SORT_RATINGS)) {
                //call the sort by ratings method on any Fragment that implements sortlistener
                ((SortListener) fragment).onSortByRatings();
            }
        }
    }

    @Override
    public void onBackStackChanged() {
     /*   if (getSupportFragmentManager().getBackStackEntryCount()==1){
            finish();
        }else {
            super.onBackPressed();
        }*/

    }


   /* private void replaceFragment(Fragment fragment) {
        String backStackName = fragment.getClass().getName();
        boolean fragmentPopped = mFragmentManager.popBackStackImmediate(backStackName, 0);
        if (!fragmentPopped) {
            fragmentTransaction.replace(R.id.container, fragment);
            fragmentTransaction.addToBackStack(backStackName);
            fragmentTransaction.commit();
        }
    }*/

    class ViewPagerAdapter extends FragmentStatePagerAdapter {
        /*private String tabs[] = new String[]{"Tab 1 ", "Tab 2 ", " Tab 3"};*/
     /*   int icons[] = {R.drawable.ic_home_black_24dp,
                R.drawable.ic_library_books_black_24dp,
                R.drawable.ic_person_black_24dp,

        };*/

        String[] tabText;
        FragmentManager fragmentManager;

        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
            tabText = getResources().getStringArray(R.array.tabs);
            fragmentManager = fm;

        }

        @Override
        public Fragment getItem(int num) {
            Fragment fragment = null;
            switch (num) {
                case MOVIES_SEARCH_RESULTS:
                    fragment = FragmentSearch.newInstance("", "");
                    break;
                case MOVIEE_HITS:
                    fragment = FragmentBoxOffice.newInstance("", "");

                    break;
                case MOVIES_UPCOMING:
                    fragment = FragmentUpcoming.newInstance("", "");

                    break;
                case NEWS_OPINION:
                    fragment = Opinion.newInstance("", "");
                    break;
                case NEWS_CULTURE:
                    fragment = Culture.newInstance("", "");
                    break;
                case NEWS_BUSINESS:
                    fragment = Business.newInstance("", "");
                    break;
                case NEWS_LIFESTYLE:
                    fragment = Lifestyle.newInstance("", "");
                    break;
                case NEWS_FASHION:
                    fragment = Fashion.newInstance("", "");
                    break;
                case NEWS_ENVIRONMENT:
                    fragment = Environment.newInstance("", "");
                    break;
                case NEWS_TECH:
                    fragment = Tech.newInstance("", "");
                    break;
                case NEWS_TRAVEL:
                    fragment = Travel.newInstance("", "");
                    break;
            }
            return fragment;
        }


        @Override
        public int getCount() {
            return TAB_COUNT;
        }

        @Override

        public CharSequence getPageTitle(int position) {
            return tabText[position];
        }

       /* private Drawable getIcon(int position) {
            return getResources().getDrawable(icons[position]);
        }*/
    }

}
    public class DetailActivity extends AppCompatActivity  {
    private Toolbar mToolbar;
    private ViewPager mPager;
    private ViewGroup mCointainerTooobar;
    private VolleySingleton volleySingleton;
    private ImageLoader imageLoader;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        mToolbar = (Toolbar) findViewById(R.id.toolbarf);
        setSupportActionBar(mToolbar);
        final CollapsingToolbarLayout collapsingToolbarLayout =
                (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout);
        Bundle extra = getIntent().getExtras();
        String detailsSectionId = extra.getString("SectionId");
        collapsingToolbarLayout.setTitle(detailsSectionId.toString().trim());
        ImageView flexibleHeader = (ImageView) findViewById(R.id.ivProfileImage);
        mCointainerTooobar = (ViewGroup) findViewById(R.id.container_app_bar);
        volleySingleton = VolleySingleton.getsInstance();
        imageLoader = volleySingleton.getImageLoader();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        displayingDetails();
   /*     Bitmap mBitmap= BitmapFactory.decodeResource(getResources(), R.id.ivProfileImage);
        Palette.from(mBitmap).generate(new Palette.PaletteAsyncListener() {

            @Override


            public void onGenerated(Palette palette) {
                String mutecolor;

                collapsingToolbarLayout.setContentScrim(Palette.g);
            }
        });*/


    }

    @Override
    public void onBackPressed() {
        if (getFragmentManager().getBackStackEntryCount() > 0) {
            getFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }

    public void displayingDetails() {
        // seactionId
        Bundle extra = getIntent().getExtras();
        String detailsSectionId = extra.getString("SectionId");
        TextView sectionText = (TextView) findViewById(R.id.DetailsSectionId);
        sectionText.setText(detailsSectionId);
        // Title
        Bundle titleText = getIntent().getExtras();
        String title = titleText.getString("title");
        TextView titleView = (TextView) findViewById(R.id.DetailNews_title);
        titleView.setText(title);
        // Thumbnail
        Bundle mUrlThumbnail = getIntent().getExtras();
        String urlThumbnail = mUrlThumbnail.getString("UrlThumbnail");
        final ImageView urlThumbnailView = (ImageView) findViewById(R.id.ivProfileImage);
        if (urlThumbnail != null) {
            imageLoader.get(urlThumbnail, new ImageLoader.ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }

                @Override
                public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
                    urlThumbnailView.setImageBitmap(response.getBitmap());
                }
            });
            urlThumbnailView.setBackgroundDrawable(Drawable.createFromPath(urlThumbnail));
        }
        // Body
        Bundle mBody = getIntent().getExtras();
        /*String body= Html.fromHtml(mBody.getString("body"));*/
        String body = mBody.getString("body");
        TextView bodyView = (TextView) findViewById(R.id.DetailsNews_description);
        bodyView.setText(Html.fromHtml(body));
        bodyView.setMaxLines(1000000);


    }

   /* @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case android.R.id.home:
                L.t(DetailActivity.this, "this is the details activity");
                getFragmentManager().popBackStack();

                return true;
        }
        return super.onOptionsItemSelected(item);
    }*/
}
DetailActivity.class

public class MainActivity extends AppCompatActivity implements MaterialTabListener, View.OnClickListener, FragmentManager.OnBackStackChangedListener {

    private static final int JOB_ID = 100;
    private Toolbar toolbar;
    private ViewPager mPager;
    private MaterialTabHost mTabHost;
    private SlidingTabLayout mTabs;
    private ViewPagerAdapter adapter;

    public static final int MOVIES_SEARCH_RESULTS = 1;
    public static final int MOVIEE_HITS = 0;
    public static final int MOVIES_UPCOMING = 2;
    public static final int NEWS_OPINION = 3;
    public static final int NEWS_CULTURE = 4;
    public static final int NEWS_BUSINESS = 5;
    public static final int NEWS_LIFESTYLE = 6;
    public static final int NEWS_FASHION = 7;
    public static final int NEWS_ENVIRONMENT = 8;
    public static final int NEWS_TECH = 9;
    public static final int NEWS_TRAVEL = 10;


    public static final int TAB_COUNT = 11;
    private JobScheduler mJobScheduler;
    Realm mRealm;
    FragmentManager mFragmentManager;
    private static final String TAG_SORT_NAME = "sortName";
    private static final String TAG_SORT_DATE = "sortDate";
    private static final String TAG_SORT_RATINGS = "sortRatings";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mJobScheduler = JobScheduler.getInstance(this);
        mRealm = Realm.getDefaultInstance();
        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
        mPager = (ViewPager) findViewById(R.id.pager);
        mPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
        mTabs = (SlidingTabLayout) findViewById(R.id.tabs);
        /*mTabHost = (MaterialTabHost) findViewById(R.id.materialTabHost);*/
        adapter = new ViewPagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(adapter);
        mTabs.setViewPager(mPager);
        mFragmentManager=getSupportFragmentManager();
        mFragmentManager.addOnBackStackChangedListener(this);
        Fragment fragment = new Business();
        // if you don't run on prior to Android 3.0 use getFragmentManager();
        mFragmentManager.beginTransaction().replace(R.id.businessFragment, fragment).addToBackStack(null).commit();
        // R.id.frame_container is the id of FrameLayout in activity_main.xml





    }

    @Override
    public void onBackPressed() {
        if(mFragmentManager.getBackStackEntryCount() == 0){
            finish();
        }else{
            super.onBackPressed();
        }
    }

    public void constructJob() {
        JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(this, MyService.class));
    }

    private void buildFAB() {
        // in Activity Context
        ImageView icon = new ImageView(this); // Create an icon
        icon.setImageResource(R.drawable.ic_action_new);
        FloatingActionButton actionButton = new FloatingActionButton.Builder(this)
                .setContentView(icon)
                .setBackgroundDrawable(R.drawable.selector_button_red)
                .build();

// repeat many times:
        ImageView iconSortName = new ImageView(this);
        iconSortName.setImageResource(R.drawable.ic_action_alphabets);
        ImageView iconSortDate = new ImageView(this);
        iconSortDate.setImageResource(R.drawable.ic_action_calendar);
        ImageView iconSortRatings = new ImageView(this);
        iconSortRatings.setImageResource(R.drawable.ic_action_important);

        // set background for all the buttons
        SubActionButton.Builder itemBuilder = new SubActionButton.Builder(this);
        itemBuilder.setBackgroundDrawable(getResources().getDrawable(R.drawable.selector_sub_button_gray));

        // build the sub buttons
        SubActionButton buttonSortName = itemBuilder.setContentView(iconSortName).build();
        SubActionButton buttonSortDate = itemBuilder.setContentView(iconSortDate).build();
        SubActionButton buttonSortRatings = itemBuilder.setContentView(iconSortRatings).build();

        buttonSortName.setTag(TAG_SORT_NAME);
        buttonSortDate.setTag(TAG_SORT_DATE);
        buttonSortRatings.setTag(TAG_SORT_RATINGS);

        buttonSortName.setOnClickListener(this);
        buttonSortDate.setOnClickListener(this);
        buttonSortRatings.setOnClickListener(this);
        //Add the sub buttons to the main floating action button
        FloatingActionMenu actionMenu = new FloatingActionMenu.Builder(this)
                .addSubActionView(buttonSortName)
                .addSubActionView(buttonSortDate)
                .addSubActionView(buttonSortRatings)

                        // ...
                .attachTo(actionButton)
                .build();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

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

            case R.id.action_settings:
                Toast.makeText(this, "Hey you just hit " + item.getTitle(), Toast.LENGTH_SHORT).show();
                return true;
            case android.R.id.home:
                getSupportFragmentManager().popBackStack();
                return true;

        }



        return onOptionsItemSelected(item);
    }

    @Override
    public void onTabSelected(MaterialTab tab) {
        mPager.setCurrentItem(tab.getPosition());

    }

    @Override
    public void onTabReselected(MaterialTab tab) {

    }

    @Override
    public void onTabUnselected(MaterialTab tab) {

    }

    @Override
    public void onClick(View v) {
        //call instantiate item since getItem may return null depending on whether the PagerAdapter is of type FragmentPagerAdapter or FragmentStatePagerAdapter
        Fragment fragment = (Fragment) adapter.instantiateItem(mPager, mPager.getCurrentItem());
        if (fragment instanceof SortListener) {

            if (v.getTag().equals(TAG_SORT_NAME)) {
                //call the sort by name method on any Fragment that implements sortlistener
                ((SortListener) fragment).onSortByName();
            }
            if (v.getTag().equals(TAG_SORT_DATE)) {
                //call the sort by date method on any Fragment that implements sortlistener
                ((SortListener) fragment).onSortByDate();
            }
            if (v.getTag().equals(TAG_SORT_RATINGS)) {
                //call the sort by ratings method on any Fragment that implements sortlistener
                ((SortListener) fragment).onSortByRatings();
            }
        }
    }

    @Override
    public void onBackStackChanged() {
     /*   if (getSupportFragmentManager().getBackStackEntryCount()==1){
            finish();
        }else {
            super.onBackPressed();
        }*/

    }


   /* private void replaceFragment(Fragment fragment) {
        String backStackName = fragment.getClass().getName();
        boolean fragmentPopped = mFragmentManager.popBackStackImmediate(backStackName, 0);
        if (!fragmentPopped) {
            fragmentTransaction.replace(R.id.container, fragment);
            fragmentTransaction.addToBackStack(backStackName);
            fragmentTransaction.commit();
        }
    }*/

    class ViewPagerAdapter extends FragmentStatePagerAdapter {
        /*private String tabs[] = new String[]{"Tab 1 ", "Tab 2 ", " Tab 3"};*/
     /*   int icons[] = {R.drawable.ic_home_black_24dp,
                R.drawable.ic_library_books_black_24dp,
                R.drawable.ic_person_black_24dp,

        };*/

        String[] tabText;
        FragmentManager fragmentManager;

        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
            tabText = getResources().getStringArray(R.array.tabs);
            fragmentManager = fm;

        }

        @Override
        public Fragment getItem(int num) {
            Fragment fragment = null;
            switch (num) {
                case MOVIES_SEARCH_RESULTS:
                    fragment = FragmentSearch.newInstance("", "");
                    break;
                case MOVIEE_HITS:
                    fragment = FragmentBoxOffice.newInstance("", "");

                    break;
                case MOVIES_UPCOMING:
                    fragment = FragmentUpcoming.newInstance("", "");

                    break;
                case NEWS_OPINION:
                    fragment = Opinion.newInstance("", "");
                    break;
                case NEWS_CULTURE:
                    fragment = Culture.newInstance("", "");
                    break;
                case NEWS_BUSINESS:
                    fragment = Business.newInstance("", "");
                    break;
                case NEWS_LIFESTYLE:
                    fragment = Lifestyle.newInstance("", "");
                    break;
                case NEWS_FASHION:
                    fragment = Fashion.newInstance("", "");
                    break;
                case NEWS_ENVIRONMENT:
                    fragment = Environment.newInstance("", "");
                    break;
                case NEWS_TECH:
                    fragment = Tech.newInstance("", "");
                    break;
                case NEWS_TRAVEL:
                    fragment = Travel.newInstance("", "");
                    break;
            }
            return fragment;
        }


        @Override
        public int getCount() {
            return TAB_COUNT;
        }

        @Override

        public CharSequence getPageTitle(int position) {
            return tabText[position];
        }

       /* private Drawable getIcon(int position) {
            return getResources().getDrawable(icons[position]);
        }*/
    }

}
    public class DetailActivity extends AppCompatActivity  {
    private Toolbar mToolbar;
    private ViewPager mPager;
    private ViewGroup mCointainerTooobar;
    private VolleySingleton volleySingleton;
    private ImageLoader imageLoader;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        mToolbar = (Toolbar) findViewById(R.id.toolbarf);
        setSupportActionBar(mToolbar);
        final CollapsingToolbarLayout collapsingToolbarLayout =
                (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout);
        Bundle extra = getIntent().getExtras();
        String detailsSectionId = extra.getString("SectionId");
        collapsingToolbarLayout.setTitle(detailsSectionId.toString().trim());
        ImageView flexibleHeader = (ImageView) findViewById(R.id.ivProfileImage);
        mCointainerTooobar = (ViewGroup) findViewById(R.id.container_app_bar);
        volleySingleton = VolleySingleton.getsInstance();
        imageLoader = volleySingleton.getImageLoader();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        displayingDetails();
   /*     Bitmap mBitmap= BitmapFactory.decodeResource(getResources(), R.id.ivProfileImage);
        Palette.from(mBitmap).generate(new Palette.PaletteAsyncListener() {

            @Override


            public void onGenerated(Palette palette) {
                String mutecolor;

                collapsingToolbarLayout.setContentScrim(Palette.g);
            }
        });*/


    }

    @Override
    public void onBackPressed() {
        if (getFragmentManager().getBackStackEntryCount() > 0) {
            getFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }

    public void displayingDetails() {
        // seactionId
        Bundle extra = getIntent().getExtras();
        String detailsSectionId = extra.getString("SectionId");
        TextView sectionText = (TextView) findViewById(R.id.DetailsSectionId);
        sectionText.setText(detailsSectionId);
        // Title
        Bundle titleText = getIntent().getExtras();
        String title = titleText.getString("title");
        TextView titleView = (TextView) findViewById(R.id.DetailNews_title);
        titleView.setText(title);
        // Thumbnail
        Bundle mUrlThumbnail = getIntent().getExtras();
        String urlThumbnail = mUrlThumbnail.getString("UrlThumbnail");
        final ImageView urlThumbnailView = (ImageView) findViewById(R.id.ivProfileImage);
        if (urlThumbnail != null) {
            imageLoader.get(urlThumbnail, new ImageLoader.ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }

                @Override
                public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
                    urlThumbnailView.setImageBitmap(response.getBitmap());
                }
            });
            urlThumbnailView.setBackgroundDrawable(Drawable.createFromPath(urlThumbnail));
        }
        // Body
        Bundle mBody = getIntent().getExtras();
        /*String body= Html.fromHtml(mBody.getString("body"));*/
        String body = mBody.getString("body");
        TextView bodyView = (TextView) findViewById(R.id.DetailsNews_description);
        bodyView.setText(Html.fromHtml(body));
        bodyView.setMaxLines(1000000);


    }

   /* @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case android.R.id.home:
                L.t(DetailActivity.this, "this is the details activity");
                getFragmentManager().popBackStack();

                return true;
        }
        return super.onOptionsItemSelected(item);
    }*/
}

如何实现此功能,任何解决方案都将受到高度赞赏

当您从详细信息活动返回时,您希望在上次的位置恢复
main活动。您可以保留当前片段的标记,并且在
OnResume
函数中,您可以将该片段替换为先前所在的片段

如果您想实现Back按钮,请从片段内部按下。这里有一个合适的代码来实现这一点。这与你提出的问题非常相关。但我把它放在这里作为问题的标题

在您的
onCreateView
中设置一个
KeyListener
,如下所示

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.your_fragment_layout, container, false);

    // Handle back press action when action mode is on.
    v.setFocusableInTouchMode(true);
    v.requestFocus();
    v.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {

                if (haveToDoSomething) {
                    // Do something
                }
                else return false;
            }

            return true;
        }
    });
}

尝试这些解决方案,将片段存储在backStack中,并重写onBackPress(),然后在其中删除当前片段并从backStack中弹出片段。您有示例代码吗?