片段表示Android应用中的可重用行为或用户界面的一部分。
我想在这里添加一个按钮: 该菜单在这里声明: 我想在这里添加一个按钮: 此菜单在此声明: <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mobile_navigation" app:startDestination="@+id/navigation_home"> <fragment android:id="@+id/navigation_home" android:name=".ui.home.HomeFragment" android:label="@string/title_home" tools:layout="@layout/fragment_home" /> <fragment android:id="@+id/navigation_dashboard" android:name=".ui.dashboard.DashboardFragment" android:label="@string/title_dashboard" tools:layout="@layout/fragment_dashboard" /> <fragment android:id="@+id/navigation_notifications" android:name=".ui.notifications.NotificationsFragment" android:label="@string/title_notifications" tools:layout="@layout/fragment_notifications" /> </navigation> 像这样使用: <fragment android:id="@+id/nav_host_fragment_activity_main" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" app:layout_constraintBottom_toTopOf="@id/nav_view" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/mobile_navigation" /> 这主要是谷歌给出的默认示例。 我尝试向 <fragment> 标签添加内容,但似乎没有显示。我找到的一些视频太旧了,甚至没有谈到片段。 我的问题是因为包含文本的视图不完全由我管理。 如何在此片段的工具栏上添加按钮? 您提供的不是菜单布局,而是导航图。这些不是相关的事情。您需要创建一个包含 my_menu_name.xml 元素的 <item> 文件。然后,在 Fragment 类中,您必须实现一个 MenuProvider,如下所示:https://stackoverflow.com/a/71965674/1860868
所以,我将 BottomNavigationView 与 Jetpack Navigation 绑定在一起。假设我有 4 个底部导航菜单,片段 A、B、C 和 D,A 作为起始目的地。从片段 A 转到片段 B,...
在 kotlin android 项目中集成 Jetpack Compose 后,未在 Backpressed 上重新创建片段
在我使用fragment的Android项目中。一切都按预期工作,直到我将 Jetpack Compose 集成到项目中。添加 Compose 后,我遇到了一个问题,我的片段不存在
我有一个功能可以在我的主要活动中创建一个新的底部工作表对话框,其中包含一个片段容器视图来显示导航图。 私人乐趣 showBottomSheet() { // 创建
如何在 PreferenceFragment 中使 Preference 可长点击?
这里有一个类似的问题,但假设使用 PreferenceActivity。 但是,如何在没有 PreferenceActivity 的情况下(例如使用 PreferenceFragm 时)使首选项可长点击...
Android中如何设置每次从底部导航栏导航到同一个fragment?
我有 4 个片段:A、B、C 和 X。 A、B和C位于底部导航栏上,因此每次我单击项目A时,我都会在屏幕上看到A片段,单击B时,我会看到B。 当我点击 C 时,我...
我对 https://developer.android.com/jetpack/compose/navigation 中记录的新 Jetpack 撰写导航组件 androidx.navigation:navigation-compose 有点困惑。 我说得对吗
我需要将一些数据从子片段传递到父片段,当我返回父片段时我将能够读取这些数据。详细: 我有一个 FragmentActivity 调用 FragmentP...
错误:无法转换为 androidx.navigation.fragment.NavHostFragment。 -- 应用程序每次都会崩溃
所以我正在尝试构建一个带有底部导航栏的应用程序,该导航栏将在片段之间切换。 我根据一些文档进行了编码。 我尝试了互联网上的所有解决方案,但没有一个...
我有一个带有 BottomNavigationView 的 Activity,它由 4 个片段组成,每当我更改选项卡时片段都会重新加载,这是我的 Activity 的代码 公共类 MainHomeActivity 扩展
如何在具有多个片段的 Kotlin MVVM Android 应用程序中集中 HTTP 响应处理和导航?
假设我们有一个 Android-Kotlin 单活动应用程序,其中每个屏幕都是使用 MVVM 模式实现的片段。该应用程序具有以下层: 视图:片段 查看Mo...
使用 RecycleViewer 中的共享元素进行 Android 转换
我尝试使用共享元素实现两个片段之间的转换。 FragmentA 有一个托管条目的 RecycleViewer。每个条目都有一个按钮,单击时会将条目转换为
我在我的应用程序中使用外部库。该示例中使用的第一个参数是“this”。这是指 appcompat 活动。但是我在一个显然不会扩展的片段中使用它
知道如何修复这个可怕的代码,以便单个触摸监听器可以处理所有点击吗? // 设备 val devices = DeviceDAO(context).getDevicesByType(2) 适配器 =
从 Android Studio 中的片段将数据写入 Firebase
所以,我有一个片段类,我尝试使用 onCreateView() 方法中的以下代码将数据写入 Firebase Realtime 数据库, databaseReference = FirebaseDatabase.getInstance().getReference(&
如何使用 Hilt 为 viewpager 中的片段创建不同的视图模型实例(范围为父片段)
我有一个片段 HomeFragment,它是应用程序导航图的一部分。在 FragmentHome 中,我有一个 viewpager,其中包含 3 个同一类 ChildFragment 的片段实例。每个 ChildFragment 都需要一个
我的程序由一个MainActivity和两个fragment Activity组成。 我需要一个片段从用户那里获取一个字符串值并将其传递给第二个片段。 我正在努力把头转过来......
为什么我的 Android 应用程序中的 Fragments 屏幕在切换几次选项卡后会变成空白?
我的应用程序背后的想法很简单。只有两个选项卡:音乐闹钟和历史日历。 当用户使用底部导航栏在选项卡之间来回切换时,可能会经过两个或
FragmentContainerview 动画排序与 popUpTo 和 popUpToInclusive
这是主活动中的设置: 这是主活动中的设置: <androidx.fragment.app.FragmentContainerView android:id="@+id/nav_host_fragment" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" app:navGraph="@navigation/main_nav_graph" /> 我有三个片段(A、B和C)。我从 A 导航到 B,从 B 导航到 C,并使用“从右侧滑入”动画,如下所示: <action android:id="@+id/a_to_b" app:destination="@id/b" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/nothing" app:popEnterAnim="@anim/nothing" app:popExitAnim="@anim/slide_out_right" /> 在 Fragment C 上有一个“X”按钮,可以取消流程并直接返回到 Fragment A,并在弹出后堆栈时使用向下滑动的动画: <action android:id="@+id/cancel" app:destination="@id/a" app:enterAnim="@anim/nothing" app:exitAnim="@anim/slide_out_bottom" app:popEnterAnim="@anim/nothing" app:popExitAnim="@anim/nothing" app:popUpTo="@id/a" app:popUpToInclusive="true" /> 除了取消操作之外的所有操作都工作正常。问题在于取消操作的顺序似乎是错误的。片段 A 绘制在片段 C 之上,因此您看不到滑出动画。我认为当发生弹出时,退出的片段应该绘制在输入的片段上。 有什么方法可以改变特定操作的这种行为吗? 这是我正在使用的动画: 没什么: <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromYDelta="0%p" android:toYDelta="0%p" /> 向右滑入: <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromXDelta="100%p" android:toXDelta="0" /> 滑出底部: <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromYDelta="0%p" android:toYDelta="100%p" android:duration="300"/> 问题在于在操作中使用目的地,这似乎添加了一个新条目而不是仅仅返回。当删除目的地并将“popUpToInclusive”设置为“false”时,它会按预期工作: <action android:id="@+id/cancel" app:enterAnim="@anim/nothing" app:exitAnim="@anim/slide_out_bottom" app:popEnterAnim="@anim/nothing" app:popExitAnim="@anim/nothing" app:popUpTo="@id/a" app:popUpToInclusive="false" />
我试图替换放置在FrameLayouts中的片段中的TextView。因此,TextView 在设计中可见,但在虚拟设备上的应用程序中却看不到。 我试图替换片段中的TextView,这些片段放置在FrameLayouts中。因此,TextView 在设计中可见,但在虚拟设备上的应用程序中看不到。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="385dp" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".RegistrationContainerFragment" android:orientation="vertical" android:background="@drawable/auth_container_background" android:elevation="8dp" android:translationZ="4dp" android:layout_marginHorizontal="15dp"> <FrameLayout android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/username_and_email_input_container" android:layout_width="match_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@+id/password_input_container" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/primary_button_container" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:fontFamily="@font/montserrat_semibold_font" android:textSize="14sp" android:textColor="@color/text" android:text="Forgot password?"/> <FrameLayout android:id="@+id/line" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/textAndLinkText" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"/> </LinearLayout> import android.os.Bundle import android.text.InputType import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentTransaction class LoginContainerFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val view = inflater.inflate(R.layout.fragment_registration_container, container, false) val fragmentManager: FragmentManager = childFragmentManager val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction() val title = TitleFragment() title.setShowBackArrow(true) title.setTitleText("Log In") fragmentTransaction.add(R.id.title, title) val textInputFragment = InputFragment() textInputFragment.setInputType(InputType.TYPE_CLASS_TEXT) textInputFragment.setInputHint("Enter your email or username") fragmentTransaction.add(R.id.text_input_container, textInputFragment) val passwordInputFragment = InputFragment() passwordInputFragment.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD) passwordInputFragment.setInputHint("Enter your password") fragmentTransaction.add(R.id.password_input_container, passwordInputFragment) val primaryButtonFragment = PrimaryButtonFragment() primaryButtonFragment.setButtonText("next") fragmentTransaction.add(R.id.primary_button_container, primaryButtonFragment) val lineFragment = LineFragment() fragmentTransaction.add(R.id.line, lineFragment) val textAndLinkFragment = TextWithLinkFragment() textAndLinkFragment.setTextAndLinkText( getString(R.string.dont_have_an_account), getString(R.string.sign_in) ) fragmentTransaction.add(R.id.textAndLinkText, textAndLinkFragment) fragmentTransaction.commit() return view } } 我试图将 TextView 放在 FrameLayout 内,但没有帮助。 之后我试图为此制作一个片段TextView,但不知何故我的应用程序没有启动而是崩溃了。 我也尝试使用一些标签,如\<androidx.swiperefreshlayout.widget.SwipeRefreshLayout\>,但没有帮助。 使用了text_input_container,但它不存在于您的布局中 fragmentTransaction.add(R.id.text_input_container, textInputFragment)