我是android新手.当我尝试使用addToBackStack()时,遇到了一个问题.
当我在片段2中按返回按钮时,它并没有进入片段1,而是回到了家.
为什么?我的代码有什么问题吗?
谢谢!
MaiinActivity.java
public class MainActivity extends ActionBaractivity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); FragmentManager mFragmentManager = getFragmentManager(); FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.add(R.ID.ID_frame, new firstFrag(), "firstFrag"); mFragmentTransaction.commit(); }}
activity_main.xml
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:paddingBottom="@dimen/activity_vertical_margin" androID:paddingleft="@dimen/activity_horizontal_margin" androID:paddingRight="@dimen/activity_horizontal_margin" androID:paddingtop="@dimen/activity_vertical_margin" tools:context="com.example.myfragtest2.MainActivity" > <FrameLayout androID:ID="@+ID/ID_frame" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" ></FrameLayout></relativeLayout>
firstFrag.java
public class firstFrag extends Fragment { private button button1; @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { VIEw vIEw = inflater.inflate(R.layout.first_frag, container, false); button1 = (button)vIEw.findVIEwByID(R.ID.btn1); button1.setonClickListener(new OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // Todo auto-generated method stub FragmentManager myFragmentManager = getFragmentManager(); FragmentTransaction myFTransaction = myFragmentManager.beginTransaction(); myFTransaction.replace(R.ID.ID_frame, new secondFrag()); myFTransaction.addToBackStack(null); myFTransaction.commit(); } }); return vIEw; }}
first_frag.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <EditText androID:ID="@+ID/et1" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:text="this is frag 1!!" /> <button androID:ID="@+ID/btn1" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="center_vertical" androID:text="move to frag 2" /></linearLayout>
解决方法:
在您的主要活动中添加此代码段
@OverrIDepublic voID onBackpressed() { if (getFragmentManager().getBackStackEntryCount() == 0) { super.onBackpressed(); } else { getFragmentManager().popBackStack(); }}
并记录您的碎片计数.
总结以上是内存溢出为你收集整理的android-addToBackStack()无法正常工作.回到家里没有以前的片段全部内容,希望文章能够帮你解决android-addToBackStack()无法正常工作.回到家里没有以前的片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)