Android – Grundlegende Steuerelemente (Teil 2) (15)

1. Dialog:Dialog

1.1 Wissenspunkte

(1) Beherrschen Sie die Hauptfunktionen von Dialogfeldern;

(2) Sie können AlertDialog und AlertDialog.Builder verwenden, um Dialogfelder zu erstellen.

(3) Benutzerdefinierte Dialogfelder können über LayoutInflater implementiert werden.

(4) Sie können die Vorgänge des Datumsdialogfelds, des Zeitdialogfelds und des Fortschrittsdialogfelds definieren.

1.2 Spezifische Details

 Durch diese Art der Vererbungsbeziehung wird festgestellt, dass Dialog keine Unterklasse der View-Klasse ist, sodass die Dialogkomponente nicht in die Layoutdatei geschrieben werden kann und daher im Aktivitätsprogramm geschrieben werden muss.

Durch API-Beobachtung haben wir herausgefunden, dass die Dialog-Klasse mehrere Unterklassen hat und diese Unterklassen lediglich unterschiedliche Formen von Dialogfeldern implementieren.

AlertDiglog- und AlertDialog.Bulider-Klassen:

Alert bedeutet Warnung, daher stellt AlertDialog ein Warnfeld dar, in dem hauptsächlich einige Warninformationen angezeigt werden.

 

Es wurde festgestellt, dass AlertDialog eine Unterklasse von Dialog ist, sodass Sie alle (nicht privaten) Methoden von Dialog verwenden können. Über die API können Sie feststellen, dass die Konstruktionsmethoden der AlertDialog-Klasse alle erwartete Änderungen sind, was bedeutet, dass die Konstruktion Methoden dieses Typs können nur diesen Typ und diesen Typ haben. Unterklassen der Klasse und Klassen im selben Paket werden aufgerufen. Daher haben wir keine Möglichkeit, diese Art von Konstruktor zum Erstellen solcher Objekte zu verwenden. Nun kommt die Frage: Wenn Sie in dem von Ihnen geschriebenen Programm ein AlertDialog-Objekt instanziieren möchten, müssen Sie die Klasse AlertDialog.Bulider verwenden. Sie können es unter dem Namen der Klasse AlertDialog.Bulider erkennen. Es handelt sich um eine spezielle Klasse zum Erstellen Alarmboxen.

 

 

public class DialogActivity extends Activity {
	private Dialog dialog = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog);
		this.dialog = new AlertDialog.Builder(this).create();//创建Dialog对象
	}
}

 Jetzt erstellt das Programm ein Dialogfeld, und dieses Dialogfeld hat keinen Inhalt. Füllen wir also den Inhalt aus.

public class DialogActivity extends Activity {
	private Dialog dialog = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog);
		this.dialog = new AlertDialog.Builder(this)
		.setTitle("对话框")
		.setIcon(R.drawable.logo)
		.setMessage("这是一个对话框")
		.create();//创建Dialog对象
		this.dialog.show();//显示对话框
	}
}

Zu diesem Zeitpunkt wird ein Dialogfeld erstellt. In vielen unserer zukünftigen Projekte werden wir Dialogfelder verwenden müssen. Wenn wir beispielsweise ein Datenelement löschen, benötigen wir ein Informationsaufforderungsfeld, um zu verhindern, dass Benutzer Fehlbedienungen ausführen. Das Bestätigen des Löschens durch den Benutzer wird ebenfalls über ein Dialogfeld implementiert, aber für diese Art von Dialogfeld müssen unbedingt Schaltflächen hinzugefügt werden.

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DialogActivity extends Activity {
	private Dialog dialog = null;
	private Button but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				DialogActivity.this.dialog = new AlertDialog.Builder(DialogActivity.this)
				.setTitle("确认删除?")
				.setIcon(R.drawable.exit)
				.setMessage("您确定要删除此笔数据?")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//确认之后需要做的事情
					}
				}).setNeutralButton("查看详情", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//查看详情所需要做的事情
					}
				}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//取消操作
					}
				})
				.create();//创建Dialog对象
				DialogActivity.this.dialog.show();//显示对话框
			}
		});
		
	}
}

Jetzt schreiben wir nur den Bildschirm, aber später müssen wir auf jeden Fall Ereignisoperationen entsprechend den Geschäftsanforderungen hinzufügen.

 

In vielen Programmen können Benutzer die Exit-Funktion implementieren, und alle Exit-Programme verfügen im Allgemeinen über ein Bestätigungsfeld, das beim Beenden aufgerufen wird, damit der Benutzer auswählen kann, ob er beendet werden möchte.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageButton
        android:id="@+id/but"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/exit" />
</LinearLayout>

 Nachdem das Layout nun fertiggestellt ist, besteht die Hauptsache darin, ein Dialogfeld in das Aktivitätsprogramm zu schreiben, um zu bestätigen, ob es beendet werden soll. Ein weiterer Schlüssel ist, wann wird das Programm beendet? Sie können die in der Aktivitätsklasse bereitgestellte Funktion „finish()“ direkt verwenden, um den Programmausgang abzuschließen.

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;

public class DialogActivity extends Activity {
	private Dialog dialog = null;
	private ImageButton but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog);
		this.but = (ImageButton) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				DialogActivity.this.dialog = new AlertDialog.Builder(DialogActivity.this)
				.setTitle("确认退出?")
				.setIcon(R.drawable.exit)
				.setMessage("您确定要退出此程序吗?")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//确认之后需要做的事情
						DialogActivity.this.finish();//表示退出程序
					}
				}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//取消操作
					}
				})
				.create();//创建Dialog对象
				DialogActivity.this.dialog.show();//显示对话框
			}
		});
		
	}
}

Ich glaube, dass viele Schüler das Programm verlassen können, indem sie direkt die Eingabetaste drücken, wenn sie ihr Mobiltelefon verwenden. Auch hier können wir die Eingabetaste drücken, um das Dialogfeld zur Bestätigung des Beendens aufzurufen. Wenn wir zu diesem Zeitpunkt relative Schlüssel überwachen, müssen wir nur eine Operationsmethode überschreiben, um die Schlüssel zu überwachen.

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;

public class DialogActivity extends Activity {
	private Dialog dialog = null;
	private ImageButton but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog);
		this.but = (ImageButton) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				DialogActivity.this.extiDialog();//调用弹出对话框的方法
			}
		});
	}
	/**
	 * @param keyCode 按下的是哪个键
	 * @param event
	 */
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		//此处需要进行判断按下的是否是返回键
		if(keyCode == KeyEvent.KEYCODE_BACK){
			this.extiDialog();
		}
		return false;//表示继续执行
	}
	/**
	 * 弹出退出对话框并进行监听操作
	 */
	public void extiDialog(){
		DialogActivity.this.dialog = new AlertDialog.Builder(DialogActivity.this)
		.setTitle("确认退出?")
		.setIcon(R.drawable.exit)
		.setMessage("您确定要退出此程序吗?")
		.setPositiveButton("确定", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				//确认之后需要做的事情
				DialogActivity.this.finish();//表示退出程序
			}
		}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				//取消操作
			}
		})
		.create();//创建Dialog对象
		DialogActivity.this.dialog.show();//显示对话框
	}
}

Dialogliste:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <Button
        android:id="@+id/but"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请选择你喜欢的水果" />
    <TextView 
        android:id="@+id/mytext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

 Das Layout wurde geschrieben. Der Schlüssel besteht darin, unser Listendialogfeld im Aktivitätsprogramm zu definieren.

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogActivity extends Activity {
	private Button but = null;
	private TextView mytext = null;
	private String fruitData[] = {"苹果","西瓜","水蜜桃"};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.mytext = (TextView) super.findViewById(R.id.mytext); 
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				Dialog dialog = new AlertDialog.Builder(DialogActivity.this)
				.setTitle("请选择您喜欢的水果")
				.setIcon(R.drawable.logo)
				.setNegativeButton("取消", new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						
					}
				}).setItems(DialogActivity.this.fruitData,  new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						String fruit = fruitData[which];
						DialogActivity.this.mytext.setText("您喜欢的水果为:" + fruit);
					}
				}).create();
				dialog.show();//显示对话框
			}
		});
	}
}

Das aktuelle Programm wird durch Hartcodierung vervollständigt. Wenn wir nicht möchten, dass der Inhalt hartcodiert angezeigt wird, können wir die Fruchtinformationen in einer separaten Datei konfigurieren, bei der es sich um die zuvor erwähnte Ressourcendatei handelt.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="friut">
        <item>苹果</item>
        <item>西瓜</item>
        <item>水蜜桃</item>
    </string-array>
</resources>

Jetzt müssen wir nur noch das Aktivitätsprogramm ändern.

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogActivity extends Activity {
	private Button but = null;
	private TextView mytext = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.mytext = (TextView) super.findViewById(R.id.mytext); 
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				Dialog dialog = new AlertDialog.Builder(DialogActivity.this)
				.setTitle("请选择您喜欢的水果")
				.setIcon(R.drawable.logo)
				.setNegativeButton("取消", new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						DialogActivity.this.mytext.setText("");//情况内容
					}
				}).setItems(R.array.friut,  new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						String fruit = DialogActivity.this.getResources().getStringArray(R.array.friut)[which];//从资源文件中读取选中的内容
						DialogActivity.this.mytext.setText("您喜欢的水果为:" + fruit);
					}
				}).create();
				dialog.show();//显示对话框
			}
		});
	}
}

Nachdem wir nun die Konfigurationsdatei verwendet haben, um den endgültigen Anzeigeeffekt zu erzielen, und nachdem die Listeninformationen abgeschlossen sind, werden wir nun untersuchen, wie das Optionsfeld-Dialogfeld implementiert wird.

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogActivity extends Activity {
	private Button but = null;
	private TextView mytext = null;
	private String fruitData[] = {"苹果","西瓜","水蜜桃"};
	private int index = 1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.mytext = (TextView) super.findViewById(R.id.mytext); 
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				Dialog dialog = new AlertDialog.Builder(DialogActivity.this)
				.setTitle("请选择您喜欢的水果")
				.setIcon(R.drawable.logo)
				.setPositiveButton("确认",  new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
					
					}
					//DialogActivity.this.index 表示默认的选中项
				}).setSingleChoiceItems(DialogActivity.this.fruitData, DialogActivity.this.index, new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						String fruit = fruitData[which];
						DialogActivity.this.mytext.setText("您喜欢的水果为:" + fruit);
						DialogActivity.this.index = which;//保存我们已选中的项
					}
				}).create();
				dialog.show();//显示对话框
			}
		});
	}
}

 Obwohl dieses Programm über eine Radioauswahl verfügt, müssen Sie dennoch auf die Schaltfläche „Bestätigen“ oder „Abbrechen“ klicken, um zum Startbildschirm zurückzukehren. Dann ist es besser, die Startbildschirminformationen zu aktualisieren, nachdem Sie auf Bestätigen geklickt haben.

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogActivity extends Activity {
	private Button but = null;
	private TextView mytext = null;
	private String fruitData[] = {"苹果","西瓜","水蜜桃"};
	private int index = 1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.mytext = (TextView) super.findViewById(R.id.mytext); 
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				Dialog dialog = new AlertDialog.Builder(DialogActivity.this)
				.setTitle("请选择您喜欢的水果")
				.setIcon(R.drawable.logo)
				.setPositiveButton("确认",  new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						String fruit = fruitData[DialogActivity.this.index];
						DialogActivity.this.mytext.setText("您喜欢的水果为:" + fruit);
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
					
					}
					//DialogActivity.this.index 表示默认的选中项
				}).setSingleChoiceItems(DialogActivity.this.fruitData, DialogActivity.this.index, new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						DialogActivity.this.index = which;//保存我们已选中的项
					}
				}).create();
				dialog.show();//显示对话框
			}
		});
	}
}

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class DialogActivity extends Activity {
	private Button but = null;
	private TextView mytext = null;
	private String fruitData[] = {"苹果","西瓜","水蜜桃"};
	private boolean flag[] = {false,false,false};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.mytext = (TextView) super.findViewById(R.id.mytext); 
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				Dialog dialog = new AlertDialog.Builder(DialogActivity.this)
				.setTitle("请选择您喜欢的水果")
				.setIcon(R.drawable.logo)
				.setPositiveButton("确认",  new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						StringBuffer sb = new StringBuffer();//这也是一个字符串
						for (int i = 0; i < flag.length; i++) {
							if(flag[i]){
								sb.append(fruitData[i]+",");
							}
						}
						DialogActivity.this.mytext.setText("您喜欢的水果为:" + sb.toString());
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
					
					}
					//参数1为一个显示内容数组,参数2 位 一个 boolean数组,长度和参数1的数组长度相同,表示选中的为那些
				}).setMultiChoiceItems(DialogActivity.this.fruitData, flag, new DialogInterface.OnMultiChoiceClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which, boolean isChecked) {
						if(isChecked){
							flag[which] = true;
						}else{
							flag[which] = false;
						}
					}
				}).create();
				dialog.show();//显示对话框
			}
		});
	}
}

 Die vom Dialogfeld implementierten Funktionen sind relativ einfach. Unabhängig davon, wie sie sich ändern, werden sie alle mithilfe der Klasse AlertDialog.Bulider erstellt.

 

Login-Layout: 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/loginlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户名:" />
        <EditText
            android:id="@+id/username"
            android:layout_width="200px"
            android:layout_height="wrap_content" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密      码:" />
        <EditText
            android:id="@+id/password"
            android:layout_width="200px"
            android:layout_height="wrap_content"
            android:password="true" />
    </LinearLayout>
</LinearLayout>

Das Login-Layout ist fertiggestellt und jetzt schreiben wir hauptsächlich Aktivitätsprogramme.

package com.example.dialogproject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class DialogActivity extends Activity {
	private Button but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				//实例化LayoutInflater对象
				LayoutInflater flater = LayoutInflater.from(DialogActivity.this);
				//将布局转换成一个组件
				View view = flater.inflate(R.layout.login, null);
				Dialog dialog = new AlertDialog.Builder(DialogActivity.this)
				.setTitle("用户登陆")
				.setIcon(R.drawable.logo)
				.setPositiveButton("登陆", new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
					}
				}).setNegativeButton("取消", new DialogInterface.OnClickListener(){
					@Override
					public void onClick(DialogInterface dialog, int which) {
						
					}
				}).setView(view)//将组件放入到对话框
				.create();
				dialog.show();
			}
		});
	}
}

Dialogfeld „Datum“:

 

package com.example.dialogproject;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;

public class DialogActivity extends Activity {
	private Button but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				DatePickerDialog dialog = new DatePickerDialog(DialogActivity.this,new DatePickerDialog.OnDateSetListener() {
					@Override
					public void onDateSet(DatePicker view, int year, int monthOfYear,
							int dayOfMonth) {
						
					}
				},1988,11,12);
				dialog.updateDate(2008, 7, 8);//修改时间
				dialog.show();
			}
		});
	}
}

 Dialogfeld „Zeit“:

 

package com.example.dialogproject;

import android.app.Activity;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;

public class DialogActivity extends Activity {
	private Button but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				TimePickerDialog dialog = new TimePickerDialog(DialogActivity.this,new TimePickerDialog.OnTimeSetListener() {
					@Override
					public void onTimeSet(TimePicker view, int hourOfDay,
							int minute) {
					}
				},18,20,true);
				dialog.show();
			}
		});
	}
}

 Dialogfeld „Fortfahren“:

 

Der Fortschritt wird jetzt über einen Thread gesteuert.

package com.example.dialogproject;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DialogActivity extends Activity {
	private Button but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				final Dialog dialog = ProgressDialog.show(DialogActivity.this, "搜索网络", "请耐心等待。。。");
				new Thread(){
					public void run(){
						try{
							Thread.sleep(3000);
						}catch(Exception e){
							e.printStackTrace();
						}finally{
							dialog.dismiss();
						}
					}
				}.start();
				dialog.show();
			}
		});
	}
}

 Das obige Programm führt nur eine einfache Operation aus. Es handelt sich nicht um die strengste Methode. Es führt lediglich einige grundlegende Threads für die Simulation aus. Zusätzlich zur Verwendung der statischen Show- Methode kann unser ProgressDialog natürlich auch mit der Konstruktormethode instanziiert werden (im Allgemeinen). wird es nicht verwenden).

package com.example.dialogproject;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DialogActivity extends Activity {
	private Button but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				final ProgressDialog dialog = new ProgressDialog(DialogActivity.this);
				dialog.setTitle("搜索网络");
				dialog.setMessage("请耐心等待。。。");
				new Thread(){
					public void run(){
						try{
							Thread.sleep(3000);
						}catch(Exception e){
							e.printStackTrace();
						}finally{
							dialog.dismiss();
						}
					}
				}.start();
				dialog.show();
			}
		});
	}
}

Standardmäßig handelt es sich um einen kreisförmigen Fortschritt. Wir können auch einen horizontalen Fortschritt festlegen.

package com.example.dialogproject;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DialogActivity extends Activity {
	private Button but = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_dialog);
		this.but = (Button) super.findViewById(R.id.but);
		this.but.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				final ProgressDialog dialog = new ProgressDialog(DialogActivity.this);
				dialog.setTitle("搜索网络");
				dialog.setMessage("请耐心等待。。。");
				dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平显示进度
				dialog.setMax(100);
				dialog.setProgress(30);
				dialog.setButton("后台处理", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						dialog.dismiss();
					}
				});
				dialog.setButton2("详细信息", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
					}
				});
				dialog.onStart();
				new Thread() {				// 线程对象
					public void run() {			// 线程主体方法
						for (int x = 0; x < 100; x++) {
							try {
								Thread.sleep(500);	// 休眠0.5秒
							} catch (InterruptedException e) {
								e.printStackTrace();
							}	// 进度条每次增长1
							dialog.incrementProgressBy(1);
						}
						dialog.dismiss();	// 关闭对话框
					}}.start();			// 线程启动

				dialog.show();
			}
		});
	}
}

1.3 Zusammenfassung

(1) Das Dialogfeld wird hauptsächlich über das Aktivitätsprogramm generiert und dient dazu, den Benutzer zur Ausführung des Vorgangs aufzufordern.

(2) Dialogfelder können unterteilt werden in: normale Dialogfelder, Datumsdialogfelder, Zeitdialogfelder und Fortschrittsdialogfelder;

(3) Die Anzeigekomponenten des Dialogfelds können auch mithilfe von Layoutdateien konfiguriert werden, die Konvertierung muss jedoch über die LayoutInflater-Klasse abgeschlossen werden.

Supongo que te gusta

Origin blog.csdn.net/weixin_41830242/article/details/131390198
Recomendado
Clasificación