我有使用Prism的Xamarin.Android todo列表移动应用程序。
问题是:
<?php
get_header();
get_template_part('index', 'banner');
?>
<!-- Blog Full Width Section -->
<div class="blog-section">
<div class="container">
<div class="row">
<!--Blog Area-->
<div class="<?php elitepress_post_layout_class(); ?>" >
<?php get_template_part('content',''); ?>
<?php comments_template('',true); ?>
</div>
<!--/Blog Area-->
<div class="preloader" style="display: block;">
<div class="cssload-loader" style="display: block;">
<div class="cssload-side"></div>
<div class="cssload-side"></div>
<div class="cssload-side"></div>
<div class="cssload-side"></div>
<div class="cssload-side"></div>
<div class="cssload-side"></div>
<div class="cssload-side"></div>
<div class="cssload-side"></div>
</div>
</div>
<?php get_sidebar(); ?>
</div>
</div>
</div>
<?php get_footer(); ?>
<!-- /Blog Full Width Section -->
)一切正常,但之后
为视图创建viewmodel,app仍在使用旧的viewmodel
之前。 我做了这个workaroud并使用了相同的PrismApplication实例:
LoadApplication(new App());
现在,问题是重定向。这段代码:
static App xamApp;
protected override void OnCreate(Bundle bundle)
{
if (xamApp == null)
{
Forms.Init(this, bundle);
xamApp = new App();
}
LoadApplication(xamApp);
xamApp.Redirect(Intent.GetStringExtra("ListID"));
}
导致错误:
public void Redirect(string listId)
{
NavigationService.NavigateAsync($"MainPage/MainNavigationPage/TodoList?id={listId}", animated: false);
}
Prism应该通过&#34; TodoList&#34;来处理MasterDetailPage中的细节绑定。来自NavigateAsync uri。
enyone知道这里可能出现什么问题吗?
答案 0 :(得分:1)
所以我终于开始工作了。
首先我在MainActivity的ActivityAttribute中使用了LaunchMode = LaunchMode.SingleTask
[活动(标签=&#34; ..&#34;, LaunchMode = LaunchMode.SingleTask ,图标=&#34; @ drawable / icon&#34;,主题=&# 34; @ style / MainTheme&#34;,MainLauncher = true]
公共类MainActivity:FormsAppCompatActivity
然后我使用了 FormsAppCompatActivity 的 OnNewIntent 方法,所以在app登录后,只启动此事件:
protected override void OnNewIntent(Intent intent)
{
var listId = intent.GetStringExtra("ListID");
((App)App.Current).Redirect(listId);
}
$"MainNavigationPage/TodoList?id={listId}"
仍在工作答案 1 :(得分:0)
根据您提供的信息,我假设当应用程序再次启动时,它已经在运行,您之前的MasterDetail页面已经在堆栈中。在重置方法中,您希望将导航堆栈重置为传递参数的新URI。在这种情况下,你应该使用绝对uri。这意味着尝试在您的uri中添加“/”前缀。所以像这样:
public void Redirect(string listId)
{
NavigationService.NavigateAsync($"/MainPage/MainNavigationPage/TodoList?id={listId}", animated: false);
}