所以,首先我创建一个像这样的新片段
ft = fm.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.replace(R.id.main_content_frame, cFr, "CARS");
ft.addToBackStack(null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
后来我把它删除了
fm.popBackStack();
ft = fm.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_NONE);
ft.remove(fm.findFragmentByTag("CARS")).commit();
Run Code Online (Sandbox Code Playgroud)
但是关闭过渡是通过TRANSIT_FRAGMENT_OPEN
动画完成的(或者我认为是默认情况下相反),我清楚地设定了TRANSIT_NONE
.
有什么想法吗?
我在滑动窗格布局中有一个片段。每个组件都有 id 属性。
<FrameLayout
android:id="@+id/interviewDetailsScreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#FFFFFF" />
<LinearLayout
android:id="@+id/candidateDetailScreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:baselineAligned="false"
android:orientation="horizontal"
android:weightSum="4" >
<fragment
android:id="@+id/candidateSummaryFragment"
android:name="com.ultimatix.ncp.activity.ui.NCPCandidateSummaryFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#808080" />
<fragment
android:id="@+id/candidateDetailFragment"
android:name="com.ultimatix.ncp.activity.ui.NCPCandidateDetailsFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:background="#FFFFFF"
android:visibility="gone" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我正在使用 FragmentTransaction 替换其中一个片段。
ft.replace(R.id.candidateSummaryFragment, new NCPCandidateSummaryFragment());
ft.commit();
Run Code Online (Sandbox Code Playgroud)
但错误它显示了错误。java.lang.IllegalArgumentException:找不到片段 NCPCandidateSummaryFragment{40decd50 #3 id=0x7f0b0074} 的 id 0x7f0b0074 的视图
R.java 也有关于具有相同十六进制和 id 的片段的条目。
我正在使用a FragmentTransaction
替换容器中的片段,如下所示:
activity.getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.abc_fade_in, R.anim.abc_fade_out).replace(R.id.container, fragmentToShow).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)
问题是a PreferenceFragment
无法转换为支持v4片段.我PreferenceFragment
该怎么用呢?
当我替换一个片段时,它会被破坏。我尝试在活动的 onCreate 中创建片段并将其引用保留在活动中,并在我“重新显示”或“重新打开”它时通过调用替换引用来使用它,但这并没有帮助,片段被销毁(替换时)由另一个片段)并重新创建。解决办法应该是什么?
我想要实现的是说WhatsApp,其中不可见时不应销毁片段,除非我没有使用滑动手势而是使用常规按钮。
谢谢。
android android-fragments fragmenttransaction fragmentmanager
我已经查看了其他答案,但没有一个能帮助我.我确保使用import android.support.v4.app.Fragment;
,这不是问题.
MainActivity.java
package com.example.nirvan.fragmentsexample2;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myFragment myfragment=new myFragment();
FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.fragmentContainer,myfragment);
fragmentTransaction.commit();
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
Error:(20, 28) error: no suitable method found for add(int,myFragment)
method FragmentTransaction.add(Fragment,String) is not applicable
(argument mismatch; int cannot be converted to Fragment)
method FragmentTransaction.add(int,Fragment) is not applicable
(argument mismatch; myFragment cannot be converted to Fragment)
Run Code Online (Sandbox Code Playgroud)
我为什么要这个?
在activity_main.xml中 …