インテントを受け取り、インテントのコンテンツをネストされたフラグメントに表示するアクティビティがあります。私のコードは、効果的なナビゲーションの実装チュートリアルと同じですが、ここにあるいくつかの変更を以下に示します
例のように、フラグメントはメイン アクティビティにネストされています。
public static class DummySectionFragment extends Fragment {
....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_section_dummy, container, false);
...
public void updateFragUI() {
if(rootView!=null){
((TextView) rootView.findViewById(R.id.example)).setText(mData.getSomething());
}
MainActivity がインテントを受け取った後に UI を更新できるように、フラグメントのインスタンスを取得するのに苦労しています。インテントを受け取り、フラグメントを更新するコードは次のとおりです。
public class uiReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
mData = getIntent().getParcelableExtra(ExampleService.EXAMPLE_INTENT);
updateUI(mData);
}
}
public void updateUI() {
DummySectionFragment dummyFrag = (DummySectionFragment)
getSupportFragmentManager().findFragmentById(dummyFragId);
if(dummyFrag==null) {
Log.v(TAG,"Dummy frag is null");
} else {
if(dummyFrag.isVisible()) {
Log.v(TAG,"Dummy frag is visable ");
dummyFrag.updateFragUI();
} else {
Log.v(TAG,"Dummy frag is not visable");
}
}
}
私は変数をいじっていくつかのアプローチを試みましたが、常にnullであるdummyFragId
ことがわかりました。dummyFrag
これまでのところ、私は試しました:
- フラグメントの XML コードでタグと ID を試しています。つまり、対応するプロパティを使用して (またはタグ
dummFragId
として) 記述されます。R.id.dummy_fragment_id
<FrameLayout ...
- フラグメント トランザクションからフラグメント タグを取得しますが、これは有効なナビゲーション コードでは明示的に行われません。
dummyFragId = dummySectionFragment.getId()
ieを使用してフラグメントIDを取得する@Override public Fragment getItem(int i) { switch (i) { case 0: // The first section of the app is the most interesting -- it offers // a launchpad into the other demonstrations in this example application. return new LaunchpadSectionFragment(); case 1: Fragment dummySectionFragment = new DummySectionFragment(); Bundle args = new Bundle(); args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, i + 1); dummySectionFragment.setArguments(args); return dummySectionFragment;
フラグメントに受信者を登録します。(レシーバーは、UI を更新できない外部クラスです)
私は解決策に対して心を開いています。フラグメントのインテントから情報を表示する最良の方法を知りたいだけです。