如何从<include>布局文件中访问元素,该文件不是活动而是片段?

时间:2017-07-18 19:27:21

标签: android android-layout android-fragments onclicklistener

只是想知道你们中的任何人是否可以帮助我访问“包含”中的元素。布局文件里面不是活动而是片段?

大多数帖子都告诉我这样做: How to access Button inside "include" layout但由于我没有参加某项活动,因此图片的听众无法工作。

Ps:当我调用一个不在包含文件中但在片段布局上的元素时,侦听器工作(打开导航抽屉)。

我在片段的onCreateView方法中拥有的内容:

&#13;
&#13;
View myLayout = view.findViewById(R.id.layout_top_bar);
        image = (ImageView) myLayout.findViewById(R.id.image_left_top_bar);
        image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity mainActivity = (MainActivity)getActivity();
                mainActivity.openMenuDrawer();
            }
        });
&#13;
&#13;
&#13;

这是我的包含布局文件:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_top_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp">

<ImageView
    android:id="@+id/image_left_top_bar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/hamburger_icon" />

这就是我在片段布局文件中包含它的方式:

 <include layout="@layout/top_bar" />

非常感谢您的帮助! :)

3 个答案:

答案 0 :(得分:1)

您可以直接使用片段的根布局来访问它。

image = (ImageView) view.findViewById(R.id.image_left_top_bar);

如果我们通过膨胀动态添加布局,我们会使用您在上面提到的方法,但这里不需要。

答案 1 :(得分:0)

将ID放入布局,然后访问elemento。

View myLayout = findViewById( R.id.layout ); 
View myView = myLayout.findViewById( R.id.item );

答案 2 :(得分:0)

更改:

getLayoutPosition()

有关

getAdapterPosition()