2017-02-21 11 views
0

Helo私は、ユーザがホームボタンを押したままアシスト機能を追加すると、ユーザがクリックできるカード例えば、数学カードをクリックすると、MathPage xamarinフォームページが開きますが、xamarinフォームアプリケーションがバックグラウンドで実行されている場合、どのボタンをクリックしてもホームスクリーンレイアウトが読み込まれます。マルチタスキングからxamarinフォームアプリケーションを閉じて、ホームボタンを押しながら数学カードをクリックすると、MathPageが開きます。XamarinフォームのナビゲーションスタックをXamarinドロイドアシストアクティビティからリセットする方法

HERESに私のAndroidのアクティビティコード:

using System; 

using Android.App; 
using Android.Content; 
using Android.Content.PM; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 
using System.Collections.Generic; 
using AppName.Droid; 
using AppName.Data; 

[assembly: Xamarin.Forms.Dependency(typeof(MainActivity))] 
namespace AppName.Droid 
{ 
    [Activity(Label = "AppName", Icon = "@drawable/ic_launcher", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity, SchoolTools.PackageInterface 
    { 
    protected override void OnCreate(Bundle savedInstanceState) 
     { 
      TabLayoutResource = Resource.Layout.Tabbar; 
      ToolbarResource = Resource.Layout.Toolbar; 

     base.OnCreate(savedInstanceState); 

     global::Xamarin.Forms.Forms.Init(this, savedInstanceState); 
      var page = Intent.GetStringExtra("page"); 
      LoadApplication(new App(page)); 


     } 

     public IList<Apps> GetInstalledApps() 
     { 
      IList<Apps> apps = new List<Apps>(); 
      var pkgInfos = global::Xamarin.Forms.Forms.Context.PackageManager.GetInstalledPackages(PackageInfoFlags.Activities); 
      foreach(var pi in pkgInfos) 
      { 
       // skip system packages 
       if (pi.ApplicationInfo.DataDir.StartsWith("/data/user/")) 
       { 
        Apps app = new Apps(pi.ApplicationInfo.LoadLabel(global::Xamarin.Forms.Forms.Context.PackageManager).ToString(), pi.PackageName); 
        if (!apps.Contains(app)) 
        { 
         apps.Add(app); 
        } 
       } 
      } 
      return apps; 
     } 

     public bool Launch(string package) 
     { 
      var intent = Application.Context.PackageManager.GetLaunchIntentForPackage(package); 
      bool retVal = IsIntentAvailable(intent); 
      if (retVal) 
      { 
       intent.AddFlags(ActivityFlags.NewTask); 
       Application.Context.StartActivity(intent); 
      } 
      return retVal; 
     } 

     private static bool IsIntentAvailable(Intent intent) 
     { 
      return intent != null && Application.Context.PackageManager.QueryIntentActivities(intent, 0).Count != 0; 
     } 
    } 
} 

HERESに私のapp.csコード:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Android.App; 
using Android.Content; 
using Android.Content.PM; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Xamarin.Forms.Platform.Android; 

namespace Appname.Droid 
{ 
[Activity(LaunchMode = LaunchMode.SingleInstance, Theme = "@style/Theme.Transparent")] 
    [IntentFilter(new[] { Intent.ActionAssist }, Categories = new[] { Intent.CategoryDefault })]  
    public class ToolBelt : Activity 
    { 


     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 

      // Set our view from the "main" layout resource 
      SetContentView(Resource.Layout.ToolBelt); 

     } 


     //Code That Opens The Math Part! 

     [Java.Interop.Export("math")] // The value found in android:onClick attribute. 
     public void btnOneClick4(View v) // Does not need to match value in above attribute. 
     { 

      var intent = new Intent(ApplicationContext, typeof(MainActivity)); 
      intent.PutExtra("page", "Math"); 
      StartActivity(intent); 
     } 


     //Code That Opens The Science Part! 

     [Java.Interop.Export("science")] // The value found in android:onClick attribute. 
     public void btnOneClick9(View v) // Does not need to match value in above attribute. 
     { 

      var intent = new Intent(ApplicationContext, typeof(MainActivity)); 
      intent.PutExtra("page", "Science"); 
      StartActivity(intent); 
     } 



     //Code That Opens The Handwriting Part! 

     [Java.Interop.Export("english")] // The value found in android:onClick attribute. 
     public void btnOneClick10(View v) // Does not need to match value in above attribute. 
     { 

      var intent = new Intent(ApplicationContext, typeof(MainActivity)); 
      intent.PutExtra("page", "Handwriten"); 
      StartActivity(intent); 
     } 



     //Code That Opens The Flascards Part! 

     [Java.Interop.Export("flashcard")] // The value found in android:onClick attribute. 
     public void btnOneClick11(View v) // Does not need to match value in above attribute. 
     { 

      var intent = new Intent(ApplicationContext, typeof(MainActivity)); 
      intent.PutExtra("page", "Flashcards"); 
      StartActivity(intent); 
     } 

     //Code That Opens The Internet App! 

     [Java.Interop.Export("web")] // The value found in android:onClick attribute. 
     public void btnOneClick8(View v) // Does not need to match value in above attribute. 
     { 
      var uri = Android.Net.Uri.Parse("http://www.google.com"); 
      var intent = new Intent(Intent.ActionView, uri); 
      StartActivity(intent); 
     } 



     //Code That Opens The Gmail App! 

     [Java.Interop.Export("email")] // The value found in android:onClick attribute. 
     public void btnOneClick3(View v) // Does not need to match value in above attribute. 
     { 
      var intent = PackageManager.GetLaunchIntentForPackage("com.google.android.gm"); 
      StartActivity(intent); 
     } 



     //Code That Opens The Books App! 

     [Java.Interop.Export("books")] // The value found in android:onClick attribute. 
     public void btnOneClick5(View v) // Does not need to match value in above attribute. 
     { 
      var intent = PackageManager.GetLaunchIntentForPackage("com.google.android.apps.books"); 
      StartActivity(intent); 
     } 

    } 
} 

ここMainActivityドロイドコードです

using System; 

using Xamarin.Forms; 

namespace AppName 
{ 
    public class App : Application 
    { 

     public App(string pageName = "AppNameHome") 
     { 
      switch (pageName) 
      { 
       case "Math": 

        MainPage = new NavigationPage(new MathPage()); 

        break; 


        case "Science": 
        MainPage = new NavigationPage(new Science.ScienceToolsPage()); 
        break; 

         case "Handwriten": 
        MainPage = new NavigationPage(new Handwriting.HandwritingToolsPage()); 
        break; 

          case "Flashcards": 
        MainPage = new NavigationPage(new Flashcards.FlashCardHome()); 
        break; 

        default: 
        MainPage = new NavigationPage(new AppNameHome()); 

        break; 


      } 



     } 

     protected override void OnStart() 
     { 
      // Handle when your app starts 
     } 

     protected override void OnSleep() 
     { 
      // Handle when your app sleeps 
     } 

     protected override void OnResume() 
     { 
      // Handle when your app resumes 
     } 
    } 
} 

は、任意のヘルプは素晴らしいだろう!事前に

感謝:)

答えて

0

私は、私もメインの活動にSingleInstanceを追加するために必要な問題は、この問題を修正するために必要なコードをHERES真= nohistoryです考え出し:

[Activity(LaunchMode = LaunchMode.SingleInstance, NoHistory = true, 
Label = "AppName", Icon = "@drawable/ic_launcher", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 
関連する問題