徘徊为什么下一个代码会出现“NoSuchMethodException:onPrefImageClick [class android.view.View]”消息。
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState)
{
View mView = inflater.inflate(R.layout.pref_detail_fragment, container, false);
return mView;
} // onCreateView()
public void onPrefImageClick(final View clickedView)
{
switch(clickedView.getId())
{
case R.id.prefDetailImage:
Log.i(TAG, "Clicked on the image");
break;
case R.id.prefDetailText:
Log.i(TAG, "Clicked on the text");
break;
default:
Log.i(TAG, "Clicked some where");
}
} // onPrefImageClick()
带
android:onClick="onPrefImageClick"
出现在xml中。
这段代码:
@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()方法;
工作正常。
可以/有人会解释吗?
答案 0 :(得分:8)
您应该将onPrefImageClick
放在托管片段的活动中。
这是因为,Android将在片段中查找不在片段中的方法。 Android不确定,哪个Fragment目前正在运行,因此它会在Activity中查找。
答案 1 :(得分:0)
只需删除final并将此方法放在片段活动上,而不是片段本身!
希望它有所帮助!