相关疑难解决方法(0)

在Android中按下按钮时触发后退按钮功能

我知道我们在android中有后退按钮可以将我们移回到上一个表单上,但是我的团队负责人要求在按钮上单击后退按钮功能

我怎样才能做到这一点?

android

47
推荐指数
6
解决办法
12万
查看次数

popBackStack()和replace()操作有何不同?

在管理Fragments时,我在应用程序中遇到了一些奇怪的行为,我想知道是否可以帮助解释为什么会发生这种情况.

我有两个片段,我们将它们称为片段A和片段B.我的应用程序的一般流程是当用户以某种方式与片段A交互时,片段B通过调用显示fragmentTransaction.replace()(这在所有情况下都会发生).当我显示片段B时,我将片段A添加到后栈; 然后,当用户按下片段B上的后退按钮时,片段A将通过从后面的堆栈弹出再次显示.

这一切都很好,但今天我发现有一个来自Fragment B的流调用fragmentTransaction.replace(),用当前在后栈上的Fragment A的相同实例替换Fragment B.

本身并没有什么不妥,但是当我从片段A回到片段B时会出现奇怪的行为.如果我打电话fragmentTransaction.replace(),onCreate()片段B 的方法就不会被调用.

但是,如果我从后面的堆栈弹出Fragment A然后用Fragment B替换它,则会释放Fragment B的onCreate()方法.为什么是这样?

请注意,片段A和片段B的所有实例都是在其主机活动启动时创建的.

编辑以澄清.onCreate()第二次调用的情况如下:将片段A =>替换为片段B,将片段A添加到后栈=> pop片段A使用popBackStack()=>将片段A再次替换为片段B.

java android android-fragments

23
推荐指数
1
解决办法
3万
查看次数

Android - 在处理带片段的导航时更新活动中的工具栏标题

我有Activity托管的带有片段的幻灯片菜单,当用户点击slidemenu片段中的任何项目时,我需要处理后退导航

当用户点击列表中的项目时,我调用此方法来显示正确的片段

public void SelectItem(int position) {

        Fragment _fragment = null;
        switch (position) {
            case 0:
                _fragment = Test_Home.newInstance();
                break;

            case 1:
                _fragment = Diseases_Fragment.newInstance();
                break;

          ........

            case 8:
                Logout();
                break;

            default:
               break;

        }

        if (_fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.view_content, _fragment).addToBackStack(null).commit();
             // set title , this textview in toolbar 
            _frag_title.setText(nav_items[position]);
            mDrawerLayout.closeDrawer(GravityCompat.START);
        }
Run Code Online (Sandbox Code Playgroud)

这个方法处理后退按钮

@Override
    public void onBackPressed() {
        if (getFragmentManager().getBackStackEntryCount() > 0) {
            getFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的onCreate方法

 @Override
        protected void onCreate(Bundle savedInstanceState) …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments

2
推荐指数
1
解决办法
4455
查看次数

标签 统计

android ×3

android-fragments ×2

java ×2