对话框是可视化编程里面很重要的一个控件,在学C++的可视化编程的时候就学过message的对话框,他是人机交互的一个很重要的一部分。
在本次试验中,是在Android平台下弄一个对话框出来。
在Activity中设置按钮事件,关键程序放在按钮事件的响应函数中,以new一个AlertDialog.Build对象的方式,构建一个具有title,message和确定按钮的对话框。
主程序如下:
import android.app.AlertDialog; //对话框控件必要的宏
import android.content.DialogInterface; //对话框控件必要的宏
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ex3_12 extends Activity {
private Button mButton1; //声明按钮变量
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton1 = (Button) findViewById(R.id.myButton1);
mButton1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) //按钮响应函数
{
// TODO Auto-generated method stub
new AlertDialog.Builder(ex3_12.this)
//在ex3_12下创建一个 AlertDialog
.setTitle(R.string.app_about)
//设置头名称——)app_about 重要
.setMessage(R.string.app_about_msg)
//设置message内容
.setPositiveButton(R.string.str_ok,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialoginterface, int i)
{
/*在这里添加按确定后要运行的程序*/ finish();
}
}
)
.show();
}
}); //弹出对话框程序
}
}
对话框进阶
3.20具有选择功能的对话框
在先前的例子中,提到一个神奇的“AlertDialog.Builder”对话框,这个对话框也可以包含对话窗口,即层层叠叠的AlertDialog。本范例利用一个按钮事件,触发后响应,在通过类似列表项目的方式呈现在AlertDialog里,一般可用作投票、选择器、遥控器等类型的范例。最后返回程序,取得User选择的菜单项目结果。
首先我们要定义一个数组
在string.xml中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">IRDC本週聚餐哪裡打牙祭?</string>
<string name="app_name">EX03_20</string>
<string name="str_button1">按我開始選擇</string>
<string name="str_alert_title">按我開始選擇</string>
<string name="str_alert_body">你選擇的是:</string>
<string name="str_ok">確認</string>
<array name="items_irdc_dialog">
<item>萌點女僕餐廳</item>
<item>一鍋日式小火鍋</item>
<item>好吃國巴西窯烤</item>
</array> //菜单显示内容
</resources>
我们在看看主程序是怎么设计的
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class ex3_20 extends Activity {
public Button mButton1;
public TextView mTextView1; //定义一个按钮变量和一个显示变量
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //设置布局
mButton1 =(Button) findViewById(R.id.myButton1);
mTextView1 = (TextView) findViewById(R.id.myTextView1);
mButton1.setOnClickListener(myShowAlertDialog);
//关键代码
}
Button.OnClickListener myShowAlertDialog = new Button.OnClickListener() //关键代码 新建一个OnClickListener()
{
public void onClick(View arg0)
{
new AlertDialog.Builder(ex3_20.this) //新建对话框
.setTitle(R.string.str_alert_title) //设置title
.setItems(R.array.items_irdc_dialog,
//设置菜单对话框关键的关键
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichcountry)
{
CharSequence strDialogBody = getString(R.string.str_alert_body);
String[] aryShop =
getResources().getStringArray(R.array.items_irdc_dialog);
new AlertDialog.Builder(ex3_20.this)
.setMessage(strDialogBody + aryShop[whichcountry])
.setNeutralButton(R.string.str_ok, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
/*在这里设置要处理的事件*/
}
})
.show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() //取消功能
{
@Override
public void onClick(DialogInterface d, int which)
{
d.dismiss();
}
})
.show();
} /*End: public void onClick(View arg0)*/
};
}
3.17 关于(About)程序信息——Menu功能菜单程序设计
下面介绍Android Menu Key 的设计,并示范“关于”对话框、离开程序等语法,程序默认覆盖的OnCreate之外,还需要另外新建两个类函数:OnCreateOptionMenu()与onOptionItemSelected(),前置为创建Menu菜单的项目,后者则是处理菜单被选择运行后的事件处理,最后则是当User单击“关于”菜单之后,弹跳出AlertDialog,显示这个程序的“关于信息”。
主程序里面新建一个onCreateOptionMenu类函数用以添加Menu菜单,再利用onOptionsItemSelected获取菜单选择项目处理相对应的事件,如getItemId()=0为关于、getItemId()=1为离开、
具体程序如下:
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class EX03_17 extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, 0, 0, R.string.app_about);
menu.add(0, 1, 1, R.string.str_exit);
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
switch(item.getItemId())
{
case 0:
openOptionsDialog();
break;
case 1:
finish();
break;
}
return true;
}
private void openOptionsDialog()
{
new AlertDialog.Builder(this)
.setTitle(R.string.app_about)
.setMessage(R.string.app_about_msg)
.setPositiveButton(R.string.str_ok,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialoginterface, int i)
{
}
}
)
.show();
}
}
文章评论(0条评论)
登录后参与讨论