2

这是 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();
        }});

结果:

单击注销图像应用程序必须注销(仅在第一次)。

问题:

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

请提供更正的代码。

4

3 回答 3

2

只用这个

<ImageView
        android:id="@+id/ivh4c5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/logoutmenu" />
于 2013-09-27T09:28:29.480 回答
2

使用您的 xml 代码,您将重点ImageView放在第一次单击并在第二次单击时调用onClick

您应该放置 android:focusable="false" android:focusableInTouchMode="false"(或删除线条)以响应第一次点击。

如果您希望图像可以聚焦并响应第一次单击,您可以检查:onFocusChangeListener

于 2013-09-27T09:29:03.137 回答
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();
    }
    }
   }
});
于 2013-09-27T10:50:27.603 回答