我正在尝试将Jetpack Compose导航应用到我的应用程序中。 我的屏幕:登录/注册屏幕和底部导航栏屏幕(通话、聊天、设置)。 我已经发现最好的方法是使用嵌套图。 但我一直收到ViewModelStore should be set before setGraph call异常。然而,我不认为这是正确的例外。 我的导航已经是最新版本了。可能我的嵌套图逻辑不正确。 要求:我希望能够从登录或注册屏幕导航到任何BottomBar屏幕&反向 @Composable
fun SetupNavGraph(
navController: NavHostController,
根据我对的理解,当关联导航图从导航堆栈中弹出时,应该立即调用它们的onCleared方法。我看到的是,在onCleared真正被调用之前,还需要几个导航调用。
在MainActivity.kt内部:
val swipeDismissableNavController = rememberSwipeDismissableNavController()
swipeDismissableNavController.addOnDestinationChangedListener(NavController.OnDestinationChangedListener { controller, dest
我有两个片段,一个是我的图表中的一个家庭片段。单击按钮后,用户将被导航到第二个片段。它的工作原理是将用户导航到第二个片段并显示文本。所以图很好。
现在我想写一个仪器测试。
@RunWith(AndroidJUnit4::class)
class TransitionTest {
@Test
fun testNavigationToSecondFragment() {
val navController = TestNavHostController(
ApplicationProvider.getApplication
我希望在两个构建变体中有两个版本的nav_graph,所以第一个版本将使用main nav_graph,第二个版本将向主nav_graph添加更多的目的地,所以这使得第二个图复制了主nav_graph,但是由于更多的目的地很难同时管理和更新这两个目标,所以为了解决这个问题,我选择通过代码创建一个导航图来实现动态导航,这很好,但是当我想为第二个构建变体目标添加嵌套图到MainGraph时,它就不能工作了。
此文件位于主代码库中。
MainGraph
object MainGraph{
var id_counter = 1
private val id = id_counter
是否可以为ViewModelStore提供一次自己的实现,以供ViewModelProviders使用而不是默认的实现?
更确切地说,我感兴趣的是将fun clear(vm: ViewModel) (或者使用索引或类似的功能)添加到ViewModelStore中,这样我就可以清除自己选择的单一视图模型,而不仅仅是使用内置的ViewModelStore#clear
public final void clear() {
for (ViewModel vm : mMap.values()) {
vm.onCleared();
}
mMap.clear();
我有一个应用程序与3个主要目的地,可以通过底部导航视图访问。每个目的地都有自己的导航图。 问题是,当我最小化并重新打开我的应用程序时,导航组件重置为默认目标。这一切为什么要发生? 我的主要活动:(省略不相关的代码) class MainActivity : AppCompatActivity() {
// List of base host containers
val fragments = listOf(
HomeHostFragment(),
CoursesHostFragment(),
Sear
下面我有一个测试类,用于独立地启动一个片段,并测试navController的导航能力。
第一个测试,landingToGameFragmentTest()工作得很完美!
第二个测试启动一个片段,该片段依赖于要传递给它的安全args。除此之外,我能感觉到它们是如何被执行的。
// Declare navController at top level so it can be accessed from any test in the class
private lateinit var navController: TestNavHostController
// Use Generic t
我有严重的问题,让我的导航控制器工作,并尝试了几乎每一个相关的问题在这个网站上。
我的问题是,当我以编程方式执行segue时,导航栏中似乎出现了一个过渡,但视图并没有改变。我看到了以下错误:
2013-10-22 13:47:30.059 App[2236:a0b] nested push animation can result in corrupted navigation bar
2013-10-22 13:47:30.411 App[2236:a0b] Finishing up a navigation transition in an unexpected state. Naviga
我有一个按钮,其中是ListBox和MainPage.xaml。当我单击该按钮时,MainPage将导航到AddPage.xaml。此页面用于添加新项目,有两个TextBoxes和提交按钮。当我单击submit按钮时,来自TextBoxes的数据被保存到XML文件,然后被调用GoBack()。
当我从AddPage.xaml返回时,我需要在我的MainPage.xaml中刷新ListBox,但它不能自动工作。我该怎么做呢?
我的MainViewModel.cs
public class MainViewModel : INotifyPropertyChanged
{
public Ob
我在创建应用程序时启动的布局中加载了一个图形(achartengine的2轴图形)
createData(); // is public void, creates data array for maChartView
setGraph(); // is public void, set tittles and font sizes, range of interests
mylayout = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(this, mData
我有一个应用程序有一个主要的活动和片段依赖于它,所以这是正常的。
现在,我的10个片段中有两个需要进行通信,我使用了这里给出的示例
class SharedViewModel : ViewModel() {
val selected = MutableLiveData<Item>()
fun select(item: Item) {
selected.value = item
}
}
class MasterFragment : Fragment() {
private lateinit var itemSelector: S