从片段活动内的第二个片段到另一个活动内的第二个片段

时间:2015-03-12 06:05:17

标签: android android-fragments android-fragmentactivity

我的应用程序的部分内容如下:

enter image description here

我坚持的问题是,我在EnterChildExpFragment。我想转到ChildDetailsFragment(在ChildExpensesActivity中)。

我无法在这里分享整个代码。但我可以告诉我到目前为止从ChildDetailsFragment前往EnterChildExpFragment所做的一些事情。 首先我尝试了:((MainActivityExpenses)getActivity()).setCurrentItem(1, true);但这显示错误:cannot cast fragmentactivty to activity

然后我尝试了:

ChildDetailsFragment childDetailsFragment = new ChildDetailsFragment();
FragmentTransaction fragTransaction=getFragmentManager().beginTransaction();
fragTransaction.replace(R.layout.child_details_fragment_layout,childDetailsFragment);
fragTransaction.addToBackStack(null);
fragTransaction.commit();

但这也显示错误:No view found for id 0x7f...

注意:Pl建议我不要使用更改设计或合并EnterChi...中的ChildExpenseActivity个片段。

我没有对片段使用parent-child概念制作嵌套片段。

更多信息:在ChildExpenseActivity中,我使用了Viewpager并使用getItem FragmentStatePagerAdapter方法加载了片段。 AddChildFragmentActivity是一个FragmentActivity,并在ActionBar中有标签。

TIA!

1 个答案:

答案 0 :(得分:0)

在我开头并做了一些“jugaad”之后,我终于想要我想要的了。

EnterChildExpFragment我写了这段代码:

MainActivityExpenses.myBoolean=true;
Intent myIntent = new Intent(viewEnterChildExp.getContext(), MainActivityExpenses.class);
myIntent.putExtra("fromEnterChildExpToMainActivityExpenses", "true");
startActivity(myIntent);
getActivity().finish();


ChildExpenseActivity

public static Boolean myBoolean=false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_expenses);

    viewPagerMainActivityExpenses = (ViewPager) findViewById(R.id.viewPagerExpenses);
    viewPagerMainActivityExpenses.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));

//        try {

        if (myBoolean) {
//                myBoolean = getIntent().getExtras().getBoolean("fromEnterChildExpToMainActivityExpenses");
            myBoolean=false;
            viewPagerMainActivityExpenses.setCurrentItem(1,true);
        }
    /*} catch (Exception e) {
        Log.e("intent error","is : "+e.toString());
    }*/
}
private class MyPagerAdapter extends FragmentStatePagerAdapter {
    public MyPagerAdapter(FragmentManager fragmentManager) {
        super(fragmentManager);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0: {
                return ChildFragment.newInstance();
            }
            case 1: {
                return ChildDetailsFragment.newInstance();
            }
            case 2: {
                return SomeFragment.newInstance();
            }

            default: {
                return SomeDefaultFragment.newInstance();
            }
        }
    }

    @Override
    public int getCount() {
        return 3;
    }
}

public void setCurrentItem(int item, boolean smoothScroll) {
    viewPagerMainActivityExpenses.setCurrentItem(item, smoothScroll);
}