A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Friends★ 中级黑马   /  2012-4-14 12:20  /  2334 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就是我在编写android小程序的时候,经常不是要定义数组嘛,可是数组定义在最上面的类下才有用,如果定义在onCreate方法下就老是报错?请教原因?

代码如下:
    package com.yt.email;

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.EditText;

public class Test14Activity extends Activity {
    private Button  btn;
   final  int  LIIST_DIALOG=1;
   boolean[]  mul=new boolean[]{true,false,true};//为什么只能定义在这里呢
   String[] items=null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);//不能定义在它下面呢
        btn=(Button)findViewById(R.id.mButton);
        items=getResources().getStringArray(R.array.msa);
        btn.setOnClickListener(new OnClickListener() {
                       
                        public void onClick(View v) {
                                showDialog(LIIST_DIALOG);
                               
                        }
                });

    }
    protected  Dialog onCreateDialog(int id){
              Dialog   dialog= null;
              switch (id) {
                case LIIST_DIALOG:
                        AlertDialog.Builder  builder= new AlertDialog.Builder(this);
                      builder.setTitle("提示");
                   
                     builder.setMultiChoiceItems(R.array.msa, mul,new DialogInterface.
                                     OnMultiChoiceClickListener() {
                               
                                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                mul[which]=isChecked;
                                String result="你选择的是:";
                                for(int  i=0;i<mul.length;i++){
                                        if (mul[i]){
                                                result=result+items[i]+"、";
                                        }
                                       
                                }
                                EditText  et=(EditText)findViewById(R.id.myEditText);
                                et.setText(result);
                                       
                                }
                        });
                     
                               
                     
                     dialog=builder.create();
                        break;

                default:
                        break;
                }
              
               
       
                return dialog;
       
       
}
       

}
     

5 个回复

倒序浏览
哥们 这个版块  大多到还在学基础,安卓问题 最好去黑马老学员android技术交流与答疑区
回复 使用道具 举报
兄弟,很简单啊,这是全局变量和局部变量。你定义在onCreate方法中的话,它的作用域就只能是当前的方法内部,而你在onCreateDialog(int id)方法中使用了数组变量,肯定会报错啊
回复 使用道具 举报
不是的,我也很想进9期的!不知道来不来得及!
回复 使用道具 举报
好像是的,呵呵……谢谢回答!
回复 使用道具 举报
本帖最后由 杨国祯 于 2012-4-23 23:08 编辑
  1. 当然可以在里面声明,注意看我的方式;onCreate()方法是当前Actvity在创建的时候,会执行的方法,也是当前Activity中代码的入口,在声明的时候在onCreate()方法中去给数组赋值是没有问题的,但是注意看是我的赋值方式,这是Android官方推荐的方式,在全局声明,在onCreate的时候,进行实例化,获取按钮,进行相关的数据的初始化
复制代码
  1. 写Android程序要养成良好的习惯,你应该用这种方式,
  2. public class TetActivity extends Activity
  3.         {
  4.                 private Button btn;
  5.                 final int LIIST_DIALOG = 1;
  6.                 boolean[] mul = null;
  7.                 String[] items = null;
  8.                 public void onCreate(Bundle savedInstanceState)
  9.                         {
  10.                                 super.onCreate(savedInstanceState);
  11.                                 setContentView(R.layout.layout_about);
  12.                                 btn = (Button) findViewById(R.id.advise);
  13.                                 mul = new boolean[]{ true, false, true };
  14.                                  items=getResources().getStringArray(R.array.msa);
  15.                                 btn.setOnClickListener(new OnClickListener()
  16.                                         {

  17.                                                 public void onClick(View v)
  18.                                                         {
  19.                                                                 showDialog(LIIST_DIALOG);

  20.                                                         }
  21.                                         });

  22.                         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马