片段事务 add/replace 无法在片段内工作
Fragment transaction add/replace not working from within a fragment
几天来我一直在为这个问题伤脑筋。似乎没有任何效果。
以下是片段所在的代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:theme="@style/Theme.Breathe"
tools:context=".MainActivity">
<fragment
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/mainFrag"
android:tag="fragment"
class="com.sneaky.example.HomeFrag"/>
</FrameLayout>
以下是发生第一个事务的 mainactivity 中的代码。以下代码按预期执行和运行。
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
Fragment fragment = new HomeFrag();
fragmentTransaction.add(R.id.mainFrag,fragment);
fragmentTransaction.commit();
以下是我们在前面的代码片段中添加的来自 HomeFrag 的代码。这段代码似乎什么也没做。单击卡片没有任何效果。 CardView onClick 似乎工作正常,因为 Log.d 和 toasts 执行 onClick。
card.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
Fragment newFragment = new FragSec();
transaction.replace(R.id.mainFrag, newFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
任何帮助将不胜感激。 :D
如果您已经通过代码添加了 HomeFrag
,请尝试将 XML 更改为此而不在
中声明 <fragment/>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:theme="@style/Theme.Breathe"
android:id="@+id/mainFrag"
tools:context=".MainActivity"/>
几天来我一直在为这个问题伤脑筋。似乎没有任何效果。
以下是片段所在的代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:theme="@style/Theme.Breathe"
tools:context=".MainActivity">
<fragment
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/mainFrag"
android:tag="fragment"
class="com.sneaky.example.HomeFrag"/>
</FrameLayout>
以下是发生第一个事务的 mainactivity 中的代码。以下代码按预期执行和运行。
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
Fragment fragment = new HomeFrag();
fragmentTransaction.add(R.id.mainFrag,fragment);
fragmentTransaction.commit();
以下是我们在前面的代码片段中添加的来自 HomeFrag 的代码。这段代码似乎什么也没做。单击卡片没有任何效果。 CardView onClick 似乎工作正常,因为 Log.d 和 toasts 执行 onClick。
card.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
Fragment newFragment = new FragSec();
transaction.replace(R.id.mainFrag, newFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
任何帮助将不胜感激。 :D
如果您已经通过代码添加了 HomeFrag
,请尝试将 XML 更改为此而不在
<fragment/>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:theme="@style/Theme.Breathe"
android:id="@+id/mainFrag"
tools:context=".MainActivity"/>