在Android中创建自定义对话框

时间:2010-09-06 09:14:06

标签: android customdialog

我发现所有东西都使用了警告框,对话框但是当我尝试使用我自己的自定义对话框创建东西时,它给了我一些问题。虽然我按照开发指南的说明进行了操作:http://developer.android.com/intl/de/guide/topics/ui/dialogs.html我无法达到我的结果,只是它会显示一个强制关闭,并显示以下错误消息。

03-04 11:37:08.780: ERROR/AndroidRuntime(726): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

我一直试图让我的自定义对话框停留很多天,但我无法提起它。我甚至尝试过我在论坛上获得的解决方案,但这似乎也没有用。     给我一些好的代码或一些建议可以使用......对此的任何建议都是可观的。

2 个答案:

答案 0 :(得分:0)

Android Dialog - confused看看这个问题,看起来与你的相似。此外,您必须共享导致错误的代码,否则很难提供帮助。

答案 1 :(得分:0)

创建custom_dialog xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:id="@+id/root"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Custom Dialog"
        android:textColor="#000"
        android:textSize="25dp"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_height="wrap_content">
    <Button
        android:id="@+id/ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ok"
        android:textColor="#000"
        android:textSize="19dp"/>
        <Button
            android:id="@+id/cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cancel"
            android:textColor="#000"
            android:textSize="19dp"/>
    </LinearLayout>
</RelativeLayout>

在MainActivity.java中添加自定义对话框视图

package techamongus.com.testapplication;

import android.app.Activity;
import android.app.Dialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class MainActivity extends Activity {
Dialog customDialog;
    Button ok,cancel;
    Button showDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        showDialog=(Button)findViewById(R.id.show);
        showDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                customDialog.show();
            }
        });
        customDialog=new Dialog(this);
        LayoutInflater customInflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
        View customLayout=customInflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.root));
        customDialog.setContentView(customLayout);
        ViewGroup.LayoutParams layoutParams2= customLayout.getLayoutParams();
        layoutParams2.height=400;
        ok=(Button)customLayout.findViewById(R.id.ok);
        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //done what do you want to do
                customDialog.dismiss();
            }
        });
        cancel=(Button)customLayout.findViewById(R.id.cancel);
        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //done what do you want to do
                customDialog.dismiss();
            }
        });
    }

}

这是你的main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context="techamongus.com.testapplication.MainActivity">
    <Button
        android:id="@+id/show"
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:text="Show dialog"
        android:layout_gravity="center"
        android:textColor="#000"/>
</LinearLayout>

http://www.techamongus.com/2017/03/android-create-custom-dialog-program.html