ホーム>source

ここに問題があります。 「ファンシーショーケースビュー」と呼ばれる他の人のカスタムコンポーネントを使用しています。私のアクティビティのボタンに焦点を合わせ、アプリを介したチュートリアルとしてテキストで強調表示します。私は最初のメッセージを開始していますが、ユーザーがアクティビティのどこかをクリックしてこれを否定すると、「次へ」ボタンが強調表示されるはずです。残念ながら、それ以外は完璧なコンポーネントには、最初のチュートリアルビューの「OnDismis」のようなリスナーが実装されていないため、次のビューを開始できます。両方を順番にコードに入れると、2番目のコードはスキップされます。また、OnFocuseChanged()などのライフサイクルメソッドを使用してみましたが、チュートリアルが終了した後でも、このメソッドは2回呼び出されません。これを処理する最善の方法は何だと思いますか?動作していないものは次のとおりです。

           try
            {
                new FancyShowCaseView.Builder(this) // if this crashes, we need clean rebuild
                    .Title(title1)
                    .TitleStyle(0, (int)GravityFlags.Center | (int)GravityFlags.Center)
                    .Build()                      
                    .Show();
            }
            catch (Exception e)
            {
                Toast.MakeText(this, "There was an error ... " + e, ToastLength.Short).Show();
            }
            try
            {
                new FancyShowCaseView.Builder(this) // if this crashes, we need clean rebuild
                    .Title("TEST")
                    //.TitleStyle(0, (int)GravityFlags.Center | (int)GravityFlags.Center)
                    .FocusOn(txtL)
                    .Build()
                    .Show();
            }
            catch (Exception e)
            {
                Toast.MakeText(this, "There was an error ... " + e, ToastLength.Short).Show();
            }

2番目のものは表示されません。イベントハンドラはなく、ライフサイクルメソッドを利用できません。ユーザーがアクティビティをロードしているときにアクティビティをクリックする可能性があるため、クリックカウントも機能しません。何か案は?

ありがとう:)

あなたの答え
  • 解決した方法 # 1

    FancyShowCaseQueue を使用する  シーケンスを制御します。

    個々の FancyShowCaseView を追加します それに、そしてキューを「表示()」すると、各FancyShowCaseViewは、キューに追加した順に発生します。

    例:

    var fancyView1 = new FancyShowCaseView.Builder(this)
                      .Title("StackOverflow 1")
                      .FocusOn(button1)
                      .Build();
    var fancyView2 = new FancyShowCaseView.Builder(this)
                      .Title("StackOverflow 2")
                      .FocusOn(button1)
                      .Build();
    var fancyQueue = new FancyShowCaseQueue()
                          .Add(fancyView1)
                          .Add(fancyView2);
    fancyQueue.Show();
    
    

    私は FancyShowCaseView のXamarin.Androidバインディングライブラリを使用しています 、しかしレポのサンプルアプリにあるJavaベースの例を確認できます。例:AnimatedActivity.java

    また、あなたは ME.Toptas.Fancyshowcase.IDismissListener を実装することができます  インターフェース:

    public void OnDismiss(string p0)
    {
        // 
    }
    public void OnSkipped(string p0)
    {
        //
    }
    
    

    そして、各FancyShowCaseViewsでその実装を使用します。

    var fancyView2 = new FancyShowCaseView.Builder(this)
                            .Title("StackOverflow 2")
                            .FocusOn(button2)
                            .DismissListener(this)
                            .Build();
    
    

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Angularアプリのappcomponenttsファイルにエラーがあります