2016-03-30 1 views
6

フラグメントに深くリンクすることは可能ですか?だから私の主な活動は、ユーザーが何をクリックするかによって異なる断片を立ち上げます。どのようにAndroid Appのフラグメントにディープリンクするのですか?出来ますか?

私は、主な活動のための深いリンクをマニフェストファイルのインテントフィルタで作成しました。しかし、断片のためにこれをどうやって行いますか?

助けがあれば助けてください

ありがとうございます。

答えて

3

これは確かに可能です。あなたはアクティビティの意図を解析し、フラグメントマネージャを使用して、あなたが望むフラグメントを後で埋め込む必要があります。アクションとフラグメントを自分で置き換えます。

@Override 
protected void onNewIntent(final Intent intent) { 
    super.onNewIntent(intent); 
    parseIntent(intent); 
} 

private void parseIntent(Intent intent) { 
    final String action = intent.getAction(); 

    if (action != null) { 
     if (Action.<ONE>.equals(action)) { 
      FragmentManager fm = getFragmentManager(); 
      Fragment<ONE> fragment = (Fragment<ONE>) Fragment.instantiate(this, 
      Fragment<ONE>.class.getCanonicalName(), 
      getIntent().getExtras()); 
      FragmentTransaction ft = fm.beginTransaction(); 
      ft.add(R.id.fragment_id, fragment); 
      ft.commit(); 
     } else if (Action.<TWO>.equals(action)) { 
      FragmentManager fm = getFragmentManager(); 
      Fragment<TWO> fragment = (Fragment<TWO>) Fragment.instantiate(this, 
      Fragment<TWO>.class.getCanonicalName(), 
      getIntent().getExtras()); 
      FragmentTransaction ft = fm.beginTransaction(); 
      ft.add(R.id.fragment_id, fragment); 
      ft.commit(); 
     } 
    } 
} 

アクションは、特定のインテントに対して一意でなければならない文字列です。彼らは何でもかまいません。同様に:

「myapp.image_included」または 「myapp.link_url」など

+0

使用すると、1つの例またはリンクを持っていますか?私はグーグルで試しましたが、何も見つかりませんでした。 THanks @Cory Roy – huey77

+0

この場合、 'Actionを呼び出すときのActionとは何ですか? .equals(action) 'してください。 –

関連する問題