gpt4 book ai didi

android - 按回不返回到上一个 fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:45 25 4
gpt4 key购买 nike

我在将 fragment 事务添加到后台堆栈时遇到问题。我有一个主要 Activity ,其中我用菜单 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 中,用户选择一些选项,结果用其他 fragment 替换菜单 fragment :

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();
}
}

就我的理解,这应该使得当用户按下他们设备上的后退按钮时,他们将被带回菜单 fragment ,但是这会退出应用程序。我做错了什么?

最佳答案

在您的 Activity 中覆盖:

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

并且您可能需要在每个提交的 fragment 事务中使用:

FragmentTransaction.addToBackStack(null);

关于android - 按回不返回到上一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com