我从Android开始,在我的项目中我使用此BottomBar。喜欢它,效果很好。我的应用程序的代码与他在教程中使用的代码几乎相同,唯一不同的是我的MainActivity
从AppCompatActivity
延伸。
现在我要做的是在FrameLayout
中加载片段:
<!-- This could be your fragment container, or something -->
<FrameLayout
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottomBar"
/>
为此,我尝试了这段代码,我发现谷歌搜索我的问题的答案:
// Create new fragment and transaction
QrCodeFragment newFragment = new QrCodeFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack if needed
transaction.replace(R.id.bottomBar, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
第transaction.replace(R.id.bottomBar, newFragment);
行抱怨newFragment的类型,应该是android.app.Fragment
。我的QrCode类:public class QrCodeFragment extends Fragment
当我今天开始使用Android时,如果我做正确的事,我会感到困惑。 如果我真的应该在FrameLayout
内加载片段,如果是这样的话,我做错了什么我无法加载。我知道它是我片段的类型,但我不知道如何使用所需类型创建它。我使用Android Studio > New > Fragment > Fragment (Blank)
感谢您的帮助
更新: 我在this post找到了我的错误解决方案,但即使没有错误,我仍然无法看到该片段。
答案 0 :(得分:8)
首先你的Fragment交易行中有一个错误,根据你的布局应该是:
transaction.replace(R.id.contentContainer, newFragment); // not R.id.bottomBar
其次,您应该使用 supportFragmentManager 而不是 fragmentManager 来处理支持片段,因此请执行以下方法:
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.contentContainer, newFragment);
transaction.addToBackStack(null);
transaction.commit();
答案 1 :(得分:1)
const Int32 OVERRIED_SERVICE_WINDOWS = 0x00100020;
const Int32 ENABLE_PRESENT = 0x01000000;
const Int32 REMOTE_FLAG = 0x00041040;
try
{
DateTime now = DateTime.Now;
IResultObject novoDeploy = connection.CreateInstance("SMS_Advertisement");
novoDeploy["CollectionID"].StringValue = collectionID;
novoDeploy["PackageID"].StringValue = pacote;
novoDeploy["ProgramName"].StringValue = nomePrograma;
novoDeploy["AdvertisementName"].StringValue = "Deploy Teste SDK";
novoDeploy["Comment"].StringValue = "Deploy realizado via SDK";
novoDeploy["AdvertFlags"].IntegerValue = novoDeploy["AdvertFlags"].IntegerValue | OVERRIED_SERVICE_WINDOWS;
novoDeploy["DeviceFlags"].IntegerValue = 0;//novoDeploy["DeviceFlags"].IntegerValue | ENABLE_PRESENT;
novoDeploy["RemoteClientFlags"].IntegerValue = novoDeploy["RemoteClientFlags"].IntegerValue | REMOTE_FLAG;
novoDeploy["AssignedScheduleEnabled"].BooleanValue = true;
novoDeploy["OfferType"].IntegerValue = 0;
novoDeploy["PresentTimeEnabled"].BooleanValue = true;
novoDeploy["PresentTime"].DateTimeValue = now;
novoDeploy["Priority"].IntegerValue = 1;
novoDeploy["TimeFlags"].IntegerValue = novoDeploy["TimeFlags"].IntegerValue | ENABLE_PRESENT;
List<IResultObject> collectionSchedule = novoDeploy.GetArrayItems("AssignedSchedule");
IResultObject collectionVariable =
connection.CreateEmbeddedObjectInstance("SMS_ST_NonRecurring");
collectionVariable["StartTime"].DateTimeValue = now;
collectionSchedule.Add(collectionVariable);
novoDeploy.SetArrayItems("AssignedSchedule", collectionSchedule);
novoDeploy.Put();
答案 2 :(得分:0)
就我而言,我可以通过使用
解决它androidx.fragment.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
替换您的
FragmentTransaction