2012-12-17 90 views
0

我使用http://startandroid.ru/uroki/vse-uroki-spiskom/128-urok-67-dialogi-progressdialog.html的示例关于Android对话框

我们有两个按钮。
onClick第一个按钮 - 显示一些进度对话框。
onClick第二个按钮 - 显示一些进度对话框。

如果在第二个按钮之后点击第一个按钮后快速显示两个进度对话框。 ?如何禁用此posibility(是在点击其中之一,当好禁用此两个按钮,或禁用的LinearLayout,...)

的strings.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string name="dflt">Обычный</string> 
<string name="horiz">Горизонтальный</string> 
<string name="app_name">ProgressDialog</string> 
</resources> 

的main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical"> 
<Button 
android:id="@+id/btnDefault" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/dflt" 
android:onClick="onclick"> 
</Button> 
<Button 
android:id="@+id/btnHoriz" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/horiz" 
android:onClick="onclick"> 
</Button> 
</LinearLayout> 

MainActivity.java:

package ru.startandroid.develop.p0671progressdialog; 

import android.app.Activity; 
import android.app.Dialog; 
import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.view.View; 

public class MainActivity extends Activity { 

    ProgressDialog pd; 
    Handler h; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    } 

    public void onclick(View v) { 
    switch (v.getId()) { 
    case R.id.btnDefault: 
     pd = new ProgressDialog(this); 
     pd.setTitle("Title"); 
     pd.setMessage("Message"); 
     // добавляем кнопку 
     pd.setButton(Dialog.BUTTON_POSITIVE, "OK", new OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     } 
     }); 
     pd.show(); 
     break; 
    case R.id.btnHoriz: 
     pd = new ProgressDialog(this); 
     pd.setTitle("Title"); 
     pd.setMessage("Message"); 
     // меняем стиль на индикатор 
     pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     // устанавливаем максимум 
     pd.setMax(2148); 
     // включаем анимацию ожидания 
     pd.setIndeterminate(true); 
     pd.show(); 
     h = new Handler() { 
     public void handleMessage(Message msg) { 
      // выключаем анимацию ожидания 
      pd.setIndeterminate(false); 
      if (pd.getProgress() < pd.getMax()) { 
      // увеличиваем значения индикаторов 
      pd.incrementProgressBy(50); 
      pd.incrementSecondaryProgressBy(75); 
      h.sendEmptyMessageDelayed(0, 100); 
      } else { 
      pd.dismiss(); 
      } 
     } 
     }; 
     h.sendEmptyMessageDelayed(0, 2000); 
     break; 
    default: 
     break; 
    } 
    } 
} 
+0

伙计们你在哪里 – user1879118

回答

1

,而不是禁用的观点只是创建你点击一个对话框,当设置为true的布尔变量。在您的onClick功能中,您可以检查是否已有活动对话框。然后,您可以将onDismissListener添加到对话框中并重置布尔变量。

+0

谢谢蒂莫:) – user1879118

+0

不客气:) – timoschloesser

0

你是说点击另一个按钮时,您希望CURR在展示新的对话框之前,进度对话框会消失吗?我想你将需要关闭该对话框,如果它显示然后用一个简单的检查你的onClick()

public void onclick(View v) { 
    if (pd != null) { 
     pd.dismiss(); 
    } 
    switch (v.getId()) { 
    case R.id.btnDefault: 
    ....