私はそうのように、NFCスキャナを実装しましたし、タグがスキャンされたときにonNewIntent
メソッドが正常に呼び出されます:resolveIntent
でPreference Activityで現在のフラグメントを取得する方法は?
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
resolveIntent(intent);
}
私はスキャンしたタグに基づいてUIを更新したいです。問題は、フラグメントへの参照を取得する方法を見つけることができないということです。
私はフラグメントのホールドを取得するためにisValidFragment
メソッドを使用することができると思ったが、今のところ運で:だから
protected boolean isValidFragment(String fragmentName) {
if (fragmentName != null && !fragmentName.equals("")) {
Fragment f = getFragmentManager().findFragmentById(R.id.myFragment); // this is always null
if (f != null && f instanceof MyFragment)
myFragment = (MyFragment) f;
}
return PreferenceFragment.class.getName().equals(fragmentName)
|| GeneralPreferenceFragment.class.getName().equals(fragmentName)
|| MyFragment.class.getName().equals(fragmentName);
}
、基本的には私が必要とする唯一のものは、現在のフラグメントへの参照ですそれがMyFragment
であるかどうかを確認してから、UIを更新するメソッドを呼び出す必要があります。
似たような質問がいくつか見つかりましたが、それでもわかりません。私はまた、インターフェイスを使用してコールバックを試みたが、私はまだ断片を参照する方法を知らない。
EDIT:これはpref_headers.xml
ファイルです:あなたはフラグメントを初期化するときは、フラグメントを確認したいとき
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header
android:fragment=".SettingsActivity$GeneralPreferenceFragment"
android:title="@string/pref_header_general" />
<header
android:fragment=".SettingsActivity$MyFragment"
android:id="@+id/myFragment"
android:title="Test" />
</preference-headers>
"getFragmentManager()。findFragmentById(R.id.myFragment)" というスニペットを使用するには、XMLファイルのフラグメント要素にIDを与える必要があります。これは、xmlの指定された要素から参照を取得する方法です。あなたのアーキテクチャに関する情報をもっと投稿できるなら、それを達成する方法があるかもしれません。 –
スキャナアクティビティのように見えます。スキャンが成功すると詳細アクティビティが開始されます。詳細アクティビティは3つの異なるフラグメントの1つを膨張させて、UIのさまざまな種類のオブジェクトの詳細を表示します。右? –
@EmreAktürk 'pref_headers.xml'ファイルのスニペットを使って私の投稿を更新しました。私はそこに断片のIDを入れましたが、それは認識されていないようです。 – Apostrofix