Android 折叠式工具栏布局内部片段返回null
我在活动中有一个viewpager。此活动启动三个Fragement(非选项卡式),创建三个不同的类扩展片段。在片段之间进行水平滚动,效果良好。 现在我想使用CollasingToolbar,在片段中单独显示图像。 活动-具有viewpager,Fragment1 XML具有CollasingToolbar,Fragment1还具有“content\u launch.XML”Fragment1类-添加了toolbar,但在获取(CollasingToolbar对象)时返回null 活动XML如下所示:Android 折叠式工具栏布局内部片段返回null,android,android-layout,android-fragments,android-collapsingtoolbarlayout,Android,Android Layout,Android Fragments,Android Collapsingtoolbarlayout,我在活动中有一个viewpager。此活动启动三个Fragement(非选项卡式),创建三个不同的类扩展片段。在片段之间进行水平滚动,效果良好。 现在我想使用CollasingToolbar,在片段中单独显示图像。 活动-具有viewpager,Fragment1 XML具有CollasingToolbar,Fragment1还具有“content\u launch.XML”Fragment1类-添加了toolbar,但在获取(CollasingToolbar对象)时返回null 活动XML如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" tools:context=".activity.LaunchActivity">
<android.support.v4.view.ViewPager
android:id="@+id/launchpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</LinearLayout>
Fragement1XML
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/quote_coordinator"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="@android:color/white"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:id="@+id/quote_appbar"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/quote_collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim ="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:expandedTitleTextAppearance="@android:color/transparent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:id="@+id/quote_backdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode ="parallax"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal" android:orientation="vertical">
<TextView android:id="@+id/quote_main_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main_title"
android:textColor="@android:color/white"
android:textSize="@dimen/main_title"/>
<TextView android:id="@+id/quote_sub_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main_sub_title"
android:textColor="@android:color/white"
android:textSize="@dimen/main_sub_title"/>
</LinearLayout>
</RelativeLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/quote_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_quote"/>
</android.support.design.widget.CoordinatorLayout>
CollasingToolbar对象返回为null,无法找到任何建议,是否有人可以建议获取对象的可能方法。第一件事:您不应该使用onCreate初始化片段中的视图元素,应该使用onCreateView。第二件事您不使用getActivity()上下文 因此,与此代码不同:
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toolbar quoteToolbar = (Toolbar) getActivity().findViewById(R.id.quote_toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(quoteToolbar);
final CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) getActivity().findViewById(R.id.quote_collapsing_toolbar);
}
使用以下命令:
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
// inflate your layout.
View view = inflater.inflate(R.layout.yourlayout, container, false);
Toolbar quoteToolbar = (Toolbar) view.findViewById(R.id.quote_toolbar);
((AppCompatActivity) view).setSupportActionBar(quoteToolbar);
final CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) view.findViewById(R.id.quote_collapsing_toolbar);
return view
}
致以最良好的祝愿,新年快乐!:)谢谢米兰兹,在应用它的同时,我得到了不可转换的类型,可以查看appcompatactivity。
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toolbar quoteToolbar = (Toolbar) getActivity().findViewById(R.id.quote_toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(quoteToolbar);
final CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) getActivity().findViewById(R.id.quote_collapsing_toolbar);
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
// inflate your layout.
View view = inflater.inflate(R.layout.yourlayout, container, false);
Toolbar quoteToolbar = (Toolbar) view.findViewById(R.id.quote_toolbar);
((AppCompatActivity) view).setSupportActionBar(quoteToolbar);
final CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) view.findViewById(R.id.quote_collapsing_toolbar);
return view
}