第五課:創建基本用戶介面(二)使用Dialog及Toast

今次要介紹的是Android中常用到的用戶介面互動部件,一個是Dialog,而另一個是Toast。學懂了這兩個也可以應付大部份的用戶互動,而且在開發過程中作為調試之用(當然專業的開發者不應該這樣做啦,但有時用這兩個真的方便得很)。

要用Dialog更用戶打招呼,要用的就是如上課所講述的按鈕事件監聽器,修改如下:

原有:

[code language=”java”]
tvGreeting.setText(R.string.hello);
tvGreeting.append(" " + name);
[/code]

修改為:

[code language=”java”]
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.hello).setMessage(name)
.setPositiveButton(android.R.string.ok, null).create();
alertDialog.show();
[/code]

調試一下,你該見到如下的結果:

PIC01_Dialog
全部的源碼如下:

[code language=”java”]
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

private TextView tvGreeting;
private EditText etName;
private Button bnOk;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tvGreeting = (TextView) findViewById(R.id.textView_greeting);
etName = (EditText) findViewById(R.id.editText_name);
bnOk = (Button) findViewById(R.id.button_ok);

bnOk.setOnClickListener(this);
}

@Override
public void onClick(View v) {
String name = etName.getText().toString();

AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.hello).setMessage(name)
.setPositiveButton(android.R.string.ok, null).create();
alertDialog.show();
}

}
[/code]

跟大家一起看看關鍵的兩句,第一要先要以AlertDialog.Builder創建一個AlertDialog,然後把Title,Message和Button的字串和按鈕事件監聽器設定好,Dialog的Button可以不只一個,而每一個Button也可以設定監視器(Listener),代表著每一個Listener可以有不同的反應,唯要注意的是這個OnClickListener是DialogInterface.OnClickListener。例如如此的話,當你按Dialog的OK後,EditText就會重新設置。

[code language=”java”]
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.hello).setMessage(name)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
etName.setText("");
}

}).create();
alertDialog.show();
[/code]

到介紹Toast了,Toast其實就是一個短提醒,大多數會出現在螢幕的下方,就是如下圖所示的一樣。

PIC02_Toast

 

Toast的創建比較簡單,一句就可以了,但要留意的是不要忘記最後的.show()呀(這也是Android開發者的common mistake)。

[code language=”java”]
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

private TextView tvGreeting;
private EditText etName;
private Button bnOk;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tvGreeting = (TextView) findViewById(R.id.textView_greeting);
etName = (EditText) findViewById(R.id.editText_name);
bnOk = (Button) findViewById(R.id.button_ok);

bnOk.setOnClickListener(this);
}

@Override
public void onClick(View v) {
String name = etName.getText().toString();

Toast.makeText(MainActivity.this, "Hello! " + name, Toast.LENGTH_LONG).show();
}

}
[/code]

———————————————————————————————————————

如公司或個人需要設計專案、 網頁製作、 編寫Mobile Apps等,可以以下的電郵聯絡,我們的專業團隊能應付以上種種的工作。

如果你認為自己有一技之長,無論精通網頁、App、Server任何一項,都歡迎你寄作品、履歷到以下電郵。

電郵:

enquiries@hktecmedia.com / hktecmedia@gmail.com

發表回覆