我的应用程序的部分内容如下:
我坚持的问题是,我在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!
答案 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);
}