原创 Android第四站 具有交互功能的对话框AlertDialog窗口

2011-1-27 01:13 6058 12 12 分类: 智能手机

对话框是可视化编程里面很重要的一个控件,在学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();
  }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /3 下一条