最初のAndroidアプリケーションのサポートが必要です。上部にアクションバーがあり、ナビゲーションタブがある単一のアクティビティがあります。これらのナビゲーションタブのために、アクティビティをフラグメントに変換する必要がありました。
したがって、これらのアクティビティの1つ(現在はフラグメント)には2つのフラグメントがあります。1つは左側にListFragment、右側にDetailFragmentです。これにより、ユーザーはリストからアイテムを選択して、右側に詳細を直接表示できます。
しかし、アクティビティがフラグメントに変換されたため、List-とDetailFragmentを保持するのはフラグメントです。これは、DetailsFragmentを変更するまでは正常に機能します。
まず、他の2つを保持しているフラグメントのコードを次に示します。
public class BlackboardFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
return inflater.inflate(R.layout.fragment_layout, container, false);
}
}
次に、fragment_layout.xmlファイル(layout-landに保存)を示します。
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/interfaces"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_marginRight="20dp"
android:layout_weight="0.60"
class="org.fawkesrobotics.app.InterfaceFragment" />
<FrameLayout
android:id="@+id/viewer"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
したがって、ListFragmentの名前はInterfaceFragmentです。コードは次のとおりです。
public class InterfaceFragment extends ListFragment {
boolean mDualPane;
// some other code
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
create_list();
View viewerFrame = getActivity().findViewById(R.id.viewer);
mDualPane = viewerFrame != null
&& viewerFrame.getVisibility() == View.VISIBLE;
if (savedInstanceState != null) {
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
}
// some other code
}
これは、それが機能しない場所です。フラグメントは実際にはリスト(ListAdapterと他のすべてが設定されているcreate_list()で作成されます)を表示しますが、私の問題は、viewerFrameがnullであるということです。上記のxmlファイルでIDビューアを宣言したので、なぜ彼がIDを見つけられないのかわかりません。それはBlackBoardFragmentまたは私の全体的な活動に「属している」のでしょうか?BlackboardFragmentでは、getActivity()。findViewByIdでも試してみたところ、うまくいきました。InterfaceFragmentがそれを見つけられないのはなぜですか?
彼が実際にlayout-landでfragment_layout.xmlを使用しているかどうかもテストしましたが、実際に使用しています。したがって、彼はidビューアを知っている必要がありますが、明らかに知りません。
さらにコードまたはDetailsFragmentのコードが必要な場合は、投稿できます。
よろしくお願いします!:)