java - 函数调用之外的弹出窗口

标签 java android

请有人帮忙-

我在名为 pop 的函数中创建了一个弹出窗口,该函数创建了一个弹出窗口。我还有另一个功能,当用户单击弹出窗口中的按钮时,它会关闭弹出窗口。我为解雇创建了一个单独的函数。我想将弹出窗口传递到解雇函数中 - 执行此操作的最佳方法是什么。我想重用解雇功能。

public class MainActivity extends AppCompatActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

public void popup(View v) {
    LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
    View layout = layoutInflater.inflate(R.layout.activity_alert_dialog,null);
    final PopupWindow popup= new PopupWindow(layout, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    View vi=(View) findViewByID(R.id.Layout);
    popup.showAtLocation(vi, 0, 20, -50);

}

public void dismiss(View v) {
     popup.dismiss();

} 
}

我的解雇方法是从资源布局文件中执行的:

<Button
    android:text="cancel"
    android:onClick="dismiss"/>

最佳答案

尝试如下代码:每次调用 popup() 时都会创建 Popup。

public class MainActivity extends AppCompatActivity {

    private PopupWindow mPopup = null;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void popup(View v) {
        LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = layoutInflater.inflate(R.layout.activity_alert_dialog,null);

        // Use global variable instead of local.
        //final PopupWindow popup= new PopupWindow(layout, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        mPopup= new PopupWindow(layout, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        View vi=(View) findViewByID(R.id.Layout);
        mPopup.showAtLocation(vi, 0, 20, -50);
    }

    public void dismiss(View v) {
        if (mPopup != null && mPopup.isShowing()) {
            mPopup.dismiss();
        }    
    } 
}

而且,我对 mPopup.showAtLocation(vi, 0, 20, -50); 的位置值有疑问。 y = -50 的位置是否正确?

我认为这个弹出窗口将显示在监视器之外。

关于java - 函数调用之外的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37805673/

相关文章:

java - 找不到 GWT 模块 com.vaadin.v7.Vaadin7WidgetSet

java - 即使在安装和验证证书后仍出现 SSL 握手错误

android - 为 ARM :./.libs/libprotoc.so 交叉编译 protobuf 时出错:错误:未定义对“描述符”的引用

Android - 填充屏幕的布局(使用重量)并且在软键盘不可用时可滚动

java - 编辑文本字段未检测到。抛出空指针异常

android - 使用 android intent 与 appcelerator 共享文件

java - 重写 gradle 代码以兼容 5.1

java - Fiddler 不捕获来自 Java 进程的网络调用?

java - 使用枚举列表作为参数的 IN 关键字的 Spring Data 查询方法

android - firebase 和 google play 服务无法解决异常