NoSuchMethodException:onClick in Fragment

时间:2013-08-30 10:44:18

标签: android

徘徊为什么下一个代码会出现“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()方法;

工作正常。

可以/有人会解释吗?

2 个答案:

答案 0 :(得分:8)

您应该将onPrefImageClick放在托管片段的活动中。 这是因为,Android将在片段中查找不在片段中的方法。 Android不确定,哪个Fragment目前正在运行,因此它会在Activity中查找。

答案 1 :(得分:0)

只需删除final并将此方法放在片段活动上,而不是片段本身!

希望它有所帮助!