点击图片第一次没有回复,需要再次点击,为什么?

时间:2013-09-27 09:25:43

标签: android android-layout android-imageview android-xml

这是XML文件代码:

    <ImageView
        android:id="@+id/ivh4c5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:clickable="true"
        android:src="@drawable/logoutmenu" />

这是代码片段:

    logOut.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            final SharedPreferences prefs = getApplicationContext().getSharedPreferences("ProfileName", MODE_PRIVATE);
            Editor editor = prefs.edit();
            editor.clear();
            editor.commit();

            finish();
        }});

结果:

点击退出图片时,应用程序必须退出(仅限第一次)。

问题:

单击注销图像时,第一次单击时不响应,我必须再次单击它才能从应用程序注销。

请提供更正后的代码。

3 个答案:

答案 0 :(得分:2)

仅使用

<ImageView
        android:id="@+id/ivh4c5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/logoutmenu" />

答案 1 :(得分:1)

使用您的xml代码,您可以在第一次点击时关注ImageView,并在第二次点击时调用onClick

您应该首先点击android:focusable="false" android:focusableInTouchMode="false"(或删除行)以响应。

如果您希望图片可以调焦并响应首次点击,您可以查看:onFocusChangeListener

答案 2 :(得分:0)

通过单击可聚焦的ImageView,可以调用OnFocusChangeListener()。你可以得到这样的事件:

logOut.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
    if(hasFocus){
            final SharedPreferences prefs = getApplicationContext().getSharedPreferences("ProfileName", MODE_PRIVATE);
            Editor editor = prefs.edit();
            editor.clear();
            editor.commit();

            finish();
    }
    }
   }
});