黑马程序员技术交流社区
标题:
关于Android的问题请教??
[打印本页]
作者:
Friends★
时间:
2012-4-14 12:20
标题:
关于Android的问题请教??
就是我在编写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;
}
}
作者:
贠(yun)靖
时间:
2012-4-14 13:02
哥们 这个版块 大多到还在学基础,安卓问题 最好去
黑马老学员android技术交流与答疑区
作者:
蒋亮
时间:
2012-4-14 15:09
兄弟,很简单啊,这是全局变量和局部变量。你定义在onCreate方法中的话,它的作用域就只能是当前的方法内部,而你在onCreateDialog(int id)方法中使用了数组变量,肯定会报错啊
作者:
Friends★
时间:
2012-4-14 15:09
不是的,我也很想进9期的!不知道来不来得及!
作者:
Friends★
时间:
2012-4-14 15:13
好像是的,呵呵……谢谢回答!
作者:
真真姐
时间:
2012-4-23 22:42
本帖最后由 杨国祯 于 2012-4-23 23:08 编辑
当然可以在里面声明,注意看我的方式;onCreate()方法是当前Actvity在创建的时候,会执行的方法,也是当前Activity中代码的入口,在声明的时候在onCreate()方法中去给数组赋值是没有问题的,但是注意看是我的赋值方式,这是Android官方推荐的方式,在全局声明,在onCreate的时候,进行实例化,获取按钮,进行相关的数据的初始化
复制代码
写Android程序要养成良好的习惯,你应该用这种方式,
public class TetActivity extends Activity
{
private Button btn;
final int LIIST_DIALOG = 1;
boolean[] mul = null;
String[] items = null;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_about);
btn = (Button) findViewById(R.id.advise);
mul = new boolean[]{ true, false, true };
items=getResources().getStringArray(R.array.msa);
btn.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
showDialog(LIIST_DIALOG);
}
});
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2