片段不会启动
Posted
技术标签:
【中文标题】片段不会启动【英文标题】:Fragment won't launch 【发布时间】:2017-08-23 19:05:06 【问题描述】:我有 onclicklistener 可以工作。我正在尝试通过单击列表视图的按钮启动一个新片段。现在,片段没有启动。但是,我们使用的模拟器并没有崩溃,所以如果我们正确理解这一点,它并没有连接到新的片段/XML 页面。
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l)
myBadData.setId(i);
Fragment fr = new event_description();
//fr.setArguments(bundle);
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
//int contId = v.getId();
fragmentTransaction.add(R.id.page, fr);
// fragmentTransaction.add(view.getId(), fr);
// fragmentTransaction.commit();
Intent intent =new Intent(eventList.this, fr.getClass());
这是我们试图在其顶部添加片段的视图的 XML 代码。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/page"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context="com.example.alex.qtapandroid.ui.fragments.DayFragment">
<!-- TODO: Update blank fragment layout -->
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical" />
<ListView
android:id="@+id/dayList"
android:layout_
android:layout_ />
</FrameLayout>
【问题讨论】:
请发布您的 LogCat,因为那里很可能有一两条错误消息。 使用这一行 fragmentTransaction.commit();如果不起作用,则发布 logcat How to call Fragment from OnClickListener的可能重复 【参考方案1】:改变这一行
Intent intent =new Intent(eventList.this, fr.getClass());
到:
fragmentTransaction.commit;
更好地替换容器中的片段,
fragmentTransaction.replace(R.id.page, fr);
【讨论】:
我们应该有一个 fragmentTransaction.add 和一个 fragmentTransaction.replace 吗?【参考方案2】:您应该使用commit()
来启动您的事务,而不是Intent()
,您还想使用replace()
而不是add()
:
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l)
//Assuming that this creates a new fragment
Fragment fr = new event_description();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.page, fr, "TAG ID");
fragmentTransaction.commit();
【讨论】:
以上是关于片段不会启动的主要内容,如果未能解决你的问题,请参考以下文章
Android 应用程序不会启动,也不会列出错误/警告。使用片段和问题似乎与 var args = ViewFragmentArgs