将OnClick Event Listerer添加到透明活动中



我使用透明主题具有透明的活动:

 <style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

我想要当此活动出现时,用户单击它,它完成了主XML文件代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:onClick="hide">

</RelativeLayout>

和主要活动的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
}
public void hide(){
    finish();
}

但是当然不起作用。

您的功能缺少param。应该是

public void hide(View v){  // notice the parameter it takes for the onClick
    finish();
}

请注意按钮文档中指定的第三个要求

您在Android:OnClick属性中声明的方法必须完全具有签名,如上所述。具体来说,该方法必须:

公开

返回void

将视图定义为唯一参数(这将是单击的视图)

最新更新