2015-10-21 83 views
0

回答:我曾在片段A一个搜索查看仍不得不关注片段B后面,所以第一backpress被清除这一重点,让第二backpress做什么,我认为这应该。感谢您的帮助,我对我最初发布的信息表示抱歉并不足以帮助我找到解决问题的方法。麻烦片段正确

问题 我运行到哪里,当我添加并提交一个新片段的问题,它需要两个后退按钮按下返回到上一个视图。

注意:这只是发生在您选择的第一个项目,一旦你成功地背出包含列表视图的片段,再次选择对象或一个新的对象,它只需要你按后退按钮一次。

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中,它包含三个片段的形式的标签,我现在正在处理tab3,它包含上面的列表视图的侦听器。

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

回答:我曾在一个片段一个搜索查看仍不得不关注片段B后面,所以第一backpress被清除这一重点,让第二backpress做我认为应该。感谢您的帮助,我对我最初发布的信息表示抱歉并不足以帮助我找到解决问题的方法。

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

我在我拥有片段的活动中添加了您对我的onBackPressed()的建议。功能没有改变,第一次后援呼叫没有触发异常。 – amgregoi

+0

你正在浏览两个片段? –

+0

正确,上面的监听器位于片段(片段A)的内部,当选择一个对象时,新对象信息(片段B)将被引发。我想在片段B中击中后退之后返回片段A.哪些工作起作用,我只是想弄清楚为什么它最初需要两个背压。 – amgregoi

0

回答:我曾在一个片段一个搜索查看仍不得不关注片段B后面,所以第一backpress被清除这一重点,让第二backpress做我认为应该。感谢您的帮助,我对我最初发布的信息表示抱歉并不足以帮助我找到解决问题的方法。