我身体里有3块碎片 MainActivity
在我的一个片段中,我有3个 ImageView
并且每个图像视图执行相同的操作 ImageView
被选中,现在我想实现的是 OnClickListener
对于每个视图,分别使用switch case或if else inside调用相同的方法。但问题是 ImageViews
内部片段不能调用mainactivity内部实现的函数。例如。下面是我想说的代码:
主要活动
public void imageClicked(View v){
if(v.getID() == findViewById(R.id.id_of_imageView_1).getID()){
myTextView.setText("ImageView 1 is Clicked")
}
else if(v.getID() == findViewById(R.id.id_of_imageView_2).getID()){
myTextView.setText("ImageView 2 is Clicked")
}
else if(v.getID() == findViewById(R.id.id_of_imageView_3).getID()){
myTextView.setText("ImageView 3 is Clicked")
}
}
xml(fragment_images.xml),其中存在图像
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/id_of_imageView_1"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1"
android:src="@drawable/laptop" />
<ImageView
android:id="@+id/id_of_imageView_2"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1"
android:src="@drawable/memory" />
<ImageView
android:id="@+id/id_of_imageView_3"
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1"
android:src="@drawable/screen" />
</LinearLayout>
</ScrollView>
xml(activity\u main.xml)这里我链接了我的片段和文本视图
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
//CHANGE THIS TEXT VIEW WHEN IMAGE IS CLICKED
<TextView
android:id="@+id/myTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center_horizontal"
android:text="Select Product"
android:textSize="20sp"
android:textStyle="bold" />
<fragment
android:id="@+id/fragment_1"
android:name="com.salmanibrahim.calssifiedelectronics.ListFrag"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
tools:layout="@layout/fragment_list" />
<fragment
android:id="@+id/fragment_2"
android:name="com.salmanibrahim.calssifiedelectronics.DetailFrag"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
tools:layout="@layout/fragment_detail" />
//THIS IS THE FRAGMENT
<fragment
android:id="@+id/fragment_images"
android:name="com.salmanibrahim.calssifiedelectronics.AddProduct"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
tools:layout="@layout/fragment_images" />
</LinearLayout>
我怎么打电话 imageClicked()
内部定义 MainActivity
使用 onClick
在 ImageView
3条答案
按热度按时间xeufq47z1#
我明白你想做什么但是
android:onClick
中声明的上下文的仅参数链接tools:context
布局文件的父标记上的字段。所以不可能参考你的
imageClicked()
从片段的mainactivity中找到的函数ImageView
因为他们在不同的背景下。查看此以获取更多信息。ebdffaop2#
在你的片段中你可以调用
imageClicked()
在MainActivity
通过使用requireActivity()
或者getActivity()
做必要的演员碎片:
对imageview2、3重复相同的步骤
还有
imageClicked()
好像不像你那样对findViewById
它将指向主活动布局,而不是片段。所以你需要改变这个
到
对其他图像也一样。
nafvub8i3#
你做得不对。你可以这样做。
然后从中实施活动
View.onClickListener
然后在已实现的方法上按id获取视图。