Android NoSuchMethodException:onClick-in片段
只是想知道为什么下一段代码会出现“NoSuchMethodException:onPrefImageClick[class android.view.view]”消息 与 存在于xml中 该代码:Android NoSuchMethodException:onClick-in片段,android,Android,只是想知道为什么下一段代码会出现“NoSuchMethodException:onPrefImageClick[class android.view.view]”消息 与 存在于xml中 该代码: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInst
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState)
{
View mView = inflater.inflate(R.layout.pref_detail_fragment, container, false);
final ImageView imgView = (ImageView) mView.findViewById(R.id.prefDetailImage);
imgView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.i(TAG, "Clicked on the image");
// Perform action on click
}
});
return mView;
} // onCreateView()
同时删除了来自xml的行和onPrefImageClick()方法
很好用
有人能解释一下吗?你应该把
放在prefimageclick
上,放在存放片段的活动中。
这是因为,Android将在活动中而不是片段中查找方法。Android无法确定当前哪个片段正在运行,因此它会在活动中显示。只需删除final并将此方法放在片段活动上,而不是放在片段本身上
希望有帮助 您是在不支持该方法的较低版本设备上运行的吗?
public void on prefimageclick
在片段活动中而不是片段中编写此方法。这是因为从xml包装的视图使用活动上下文进行膨胀。碎片有它自己的生命周期。是的,但简而言之,我的理由也成立;)
android:onClick="onPrefImageClick"
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState)
{
View mView = inflater.inflate(R.layout.pref_detail_fragment, container, false);
final ImageView imgView = (ImageView) mView.findViewById(R.id.prefDetailImage);
imgView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.i(TAG, "Clicked on the image");
// Perform action on click
}
});
return mView;
} // onCreateView()