android从活动返回片段

时间:2016-02-25 09:59:25

标签: android android-fragments

我从我的片段中调用我的活动。在片段中我在onCreateView

中执行此操作
imageViewadd.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v) {
        Intent intent = new Intent(getActivity(), AjouterNC.class);
        startActivity(intent);
    }
});

现在,在我的活动中,我尝试在Asyntask

中提交数据后返回到片段
protected void onPostExecute(Void result) {
    super.onPostExecute(result);
    Submit.setEnabled(true);
    FragmentManager fm = getFragmentManager();
    if( getFragmentManager().getBackStackEntryCount() != 0 ){
        getFragmentManager().popBackStack();
    }
} 

我尝试了不同的方法,但我没有找到解决方案。任何帮助将不胜感激?

3 个答案:

答案 0 :(得分:2)

使用此代码可能会对您有所帮助

Fragment frag =  new MyFragment();
if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
    }

`

答案 1 :(得分:1)

这是你可以在android中调用Activity的片段。

FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager
                        .beginTransaction();
     MyFragment fragmentS = new MyFragment();
                fragmentTransaction.replace(R.id.main_content_fragment, fragmentS);
                fragmentTransaction.commit();

如果您使用Activity extends FragmentActivity,请使用getSupportFragmentManager()代替getFragmentManager()

main_content_fragment是您实际放置片段的容器主体。 祝你好运!!

答案 2 :(得分:0)

您需要将片段添加到Backstack中。创建新活动时,您的片段将被删除,必须再次添加。解决方案是保留在活动的 onStart()中添加片段的代码。

例如,您在活动A中创建了片段F.当片段F中发生click事件时,您将启动名为 AjouterNC 的活动。从活动中删除片段F,调用活动A的 onStop(),并将活动A添加到backstack。当你在 AjouterNC 中按下backpress时,活动A会回到顶部,并且会调用 onStart()。在 onStart()方法中,保留用于添加或替换片段的代码。