Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NoSuchMethodException:onClick-in片段_Android - Fatal编程技术网

Android NoSuchMethodException:onClick-in片段

Android NoSuchMethodException:onClick-in片段,android,Android,只是想知道为什么下一段代码会出现“NoSuchMethodException:onPrefImageClick[class android.view.view]”消息 与 存在于xml中 该代码: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInst

只是想知道为什么下一段代码会出现“NoSuchMethodException:onPrefImageClick[class android.view.view]”消息

存在于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()方法

很好用


有人能解释一下吗?

你应该把
放在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()