按下不返回上一个片段

JamMaster

我在将片段事务添加到后台堆栈时遇到问题。我有一个Main活动,其中用Menu Fragment填充布局:

public class MainActivity extends ActionBarActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getFragmentManager().beginTransaction().add(R.id.frag_container, new MainMenuFragment()).commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}

然后,在MainMenuFragment内部,用户选择一些选项,从而用其他一些片段替换菜单片段:

public class MainMenuFragment extends Fragment implements OnItemClickListener{
    GridView grid;
    FragmentManager manager;

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

    manager = getActivity().getFragmentManager();
    grid = (GridView) root.findViewById(R.id.gridView1);

    grid.setAdapter(new MenuTileAdapter(getActivity()));
    grid.setOnItemClickListener(this);

    return root;
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    FragmentTransaction trans = manager.beginTransaction();
    if (position == 0){
        trans.replace(R.id.frag_container, new BasicSettingsFragment());
        trans.addToBackStack(null);
        trans.commit();
    }
}

}

据我了解,这应该做到这一点,以便当用户在设备上按下后退按钮时,他们将被带回到菜单片段,但是这退出了应用程序。我究竟做错了什么?

格鲁吉亚人贝纳塔托斯

您的代码是混合的,您使用来自appcompat的ActionBarActivity而不使用getSupportFragmentManager(),并且如果您决定使用片段,则片段导入应该是appcompat之一。如果不是,请使用Activity而不是ActionBarActivity,并使用FragmentManager进行简单的Fragment导入

将此添加到您的活动中android:configChanges="keyboardHidden|orientation|screenSize"这将在旋转时阻止您的活动重新开始。setRetainInstance(true)在片段上使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

返回上一个片段无法正常工作

来自分类Dev

以编程方式返回到上一个片段

来自分类Dev

如何正确返回上一个片段?

来自分类Dev

返回Android中onBackPressed上的上一个片段

来自分类Dev

3个选项卡,每个选项卡带有1个片段,按返回时将转到上一个选项卡

来自分类Dev

恢复上一个片段onBackPressed()?

来自分类Dev

如何验证上一个片段中按下的按钮

来自分类Dev

从上一个片段返回时如何避免活动空白

来自分类Dev

返回上一个片段后,应用标题保持不变

来自分类Dev

需要按两次以返回到上一个片段

来自分类Dev

如何返回到后栈中的上一个片段?

来自分类Dev

如何返回上一个屏幕,而不是按返回键退出应用程序

来自分类Dev

iOS:返回上一个视图

来自分类Dev

返回上一个活动状态

来自分类Dev

如何返回上一个活动

来自分类Dev

android返回上一个视图

来自分类Dev

返回上一个功能

来自分类Dev

如何返回上一个活动?

来自分类Dev

Android工具栏:如果按下向后箭头,如何返回上一个活动

来自分类Dev

按下手柄后无法返回上一个活动

来自分类Dev

单击上一个按钮时保留片段的状态

来自分类Dev

如何回到上一个片段

来自分类Dev

当页面返回上一个时返回被点击的元素

来自分类Dev

在另一个活动中回退到上一个片段

来自分类Dev

上一个片段出现在当前片段的方向改变时

来自分类Dev

Android将参数从片段传递到上一个片段?

来自分类Dev

避免在屏幕旋转时被替换的片段调用上一个片段

来自分类Dev

我正在尝试关闭三个片段系列中的最后一个片段,但是需要一段时间才能关闭它并返回上一个活动

来自分类Dev

返回到WPF的上一个窗口

Related 相关文章

热门标签

归档