已回答: 我在Fragment A中有一个仍然关注片段B后面的搜索视图,所以第一次背压是清除焦点,让第二次背压做我所做的事情认为它应该。感谢您的帮助,对于我原先发布的信息道歉并不足以帮助我找到解决问题的方法。
问题 我遇到了一个问题,当我添加并提交一个新片段时,它需要按两个后退按钮才能返回上一个视图。
注意:这只发生在您选择的第一个项目上,一旦您成功退回到包含列表视图的片段并再次选择该对象,或者只需要按下后退按钮的新对象一次。
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) {
final Obj item = (obj) adapter.getItemAtPosition(position);
Bundle b = new Bundle();
b.putParcelable("obj", item);
Fragment fragment = new ObjFragment();
fragment.setArguments(b);
getFragmentManager().beginTransaction().add(android.R.id.content, fragment).addToBackStack(null).commit();
}
});
当我选择一个对象时,我有一个对象的列表视图,一个新的片段被启动,片段里面没有任何花哨的东西,只是填充了一些信息文本框等。
我已经检查过它是否可能启动了两个片段,所以我可能需要退出两次以关闭并返回到前一个片段,但事实并非如此。
我也尝试在我的活动中覆盖onBackPressed方法,并且仅在按下第二个后退按钮后调用它,我不确定这意味着什么。欢迎提出任何建议,这可能非常简单,我只是忽略了。
这是在我的MainActivity中,它包含3个标签形式的片段,我正在处理tab3,其中包含了listview的上述监听器。
private ViewPager mViewPager;
private SlidingTabLayout tabs;
private CharSequence Titles[] = {"Recent", "Library", "All"};
private int Numbtabs = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), Titles, Numbtabs);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mViewPagerAdapter);
mViewPager.setOffscreenPageLimit(3);
tabs = (SlidingTabLayout) findViewById(R.id.tabs);
tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width
// Setting the ViewPager For the SlidingTabsLayout
tabs.setViewPager(mViewPager);
}
//trying to solve double back button to exit objfragment
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0){
getSupportFragmentManager().popBackStack();
}
else{
super.onBackPressed();
}
}
已回答: 我在Fragment A中有一个仍然关注片段B后面的搜索视图,所以第一次背压是清除焦点,让第二次背压做我所做的事情认为它应该。感谢您的帮助,对于我原先发布的信息道歉并不足以帮助我找到解决问题的方法。
答案 0 :(得分:0)
you can do something like this in your code
//Click of the Item
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) {
final Obj item = (obj) adapter.getItemAtPosition(position);
Bundle b = new Bundle();
b.putParcelable("obj", item);
Fragment fragment = new ObjFragment();
fragment.setArguments(b);
getFragmentManager().beginTransaction().add(android.R.id.content, fragment).addToBackStack("ObjFragment").commit();
}
});
//Backpress code
FragmentManager fragmentManager = getFragmentManager();
try {
fragmentManager.popBackStack();
} catch (Exception e) {
e.printStackTrace();
}
答案 1 :(得分:0)
回答:我在Fragment A中有一个仍然关注片段B后面的搜索视图,所以第一个背压是清除焦点,让第二个背压做我认为应该做的事情。感谢您的帮助,对于我原先发布的信息并不足以帮助我找到解决问题的方法,我深表歉意。