我发现所有东西都使用了警告框,对话框但是当我尝试使用我自己的自定义对话框创建东西时,它给了我一些问题。虽然我按照开发指南的说明进行了操作: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
我一直试图让我的自定义对话框停留很多天,但我无法提起它。我甚至尝试过我在论坛上获得的解决方案,但这似乎也没有用。 给我一些好的代码或一些建议可以使用......对此的任何建议都是可观的。
答案 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