2010-09-06 4 views
0

Я нашел все, что работает с полем оповещений, диалоговым окном, но когда я пытаюсь создать вещи в своем собственном диалоговом окне, это создает проблемы. Хотя я следовал инструкциям в соответствии с руководством для разработчиков: http://developer.android.com/intl/de/guide/topics/ui/dialogs.html Я не мог достичь своими результатами, так как он отображает силовую связь со следующим сообщением об ошибке.Создание пользовательского диалогового окна в Android

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

Android Dialog - confused посмотрите на вопрос, похожий на ваш. Также вам нужно поделиться кодом, результатом которого является ошибка, иначе это сложно.

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

+0

Вам нужно включить отказ от ответственности при рекомендации веб-сайта или программы или другого ресурса, в котором вы участвуете, в противном случае это может считаться спамом. –