如何使用java制作全局arraylist,获取错误“;无法解析符号“;

如何使用java制作全局arraylist,获取错误“;无法解析符号“;,java,android-studio,arraylist,Java,Android Studio,Arraylist,我还是一个初学者,试图在android studio中使用java制作一个简单的应用程序来调用宾果数字。我很难在接到电话后删除号码。我试图使数组列表公开并可供我的button方法访问,但我得到了“无法解析符号‘ball’”。我曾尝试将数组列表放在onCreate()下面,但后来有人告诉我需要声明ball final。如果我这样做,以后就无法从数组列表中删除。我尝试了很多不同的东西,但我似乎无法得到它,任何建议都是感激的 类MainActivity扩展了AppCompatActivity{ pub

我还是一个初学者,试图在android studio中使用java制作一个简单的应用程序来调用宾果数字。我很难在接到电话后删除号码。我试图使数组列表公开并可供我的button方法访问,但我得到了“无法解析符号‘ball’”。我曾尝试将数组列表放在
onCreate()
下面,但后来有人告诉我需要声明ball final。如果我这样做,以后就无法从数组列表中删除。我尝试了很多不同的东西,但我似乎无法得到它,任何建议都是感激的

类MainActivity扩展了AppCompatActivity{

public static void main (String[] args)
{
    ArrayList<String> ball = new ArrayList<String>();
    ball.add("B1");
    ball.add("B2");
    ball.add("B3");
    ball.add("B4");
}

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

    Button button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Random r = new Random();
            String call = ball.get(r.nextInt(ball.size()));
            TextView text = (TextView) findViewById(R.id.result);
            text.setText(call);
            ball.remove(r);
        }
    });
}
}
publicstaticvoidmain(字符串[]args)
{
ArrayList ball=新的ArrayList();
添加“B1”);
添加(“B2”);
添加(“B3”);
添加(“B4”);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button Button=(Button)findViewById(R.id.Button);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
随机r=新随机();
字符串调用=ball.get(r.nextInt(ball.size());
TextView text=(TextView)findViewById(R.id.result);
text.setText(调用);
球。移除(r);
}
});
}
}

一般来说,在android studio中,不需要所谓的“main”函数,这在其他java程序中被广泛使用,因为默认情况下,它没有相同的用法。然而,
onCreate()
方法可以被称为类似于
main
的一般用法。下面的代码解决了您的问题:

public class MainActivity extends AppCompatActivity{

private ArrayList<String> ball;

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);


    ball = new ArrayList<String>();

    ball.add("B1");
    ball.add("B2");
    ball.add("B3");
    ball.add("B4");


    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Random r = new Random();
            String call = ball.get(r.nextInt(ball.size()));
            TextView text = (TextView) findViewById(R.id.result);
            text.setText(call);
            ball.remove(r);
        }
    });
}
public类MainActivity扩展了AppCompatActivity{
私人ArrayList ball;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ball=新的ArrayList();
添加“B1”);
添加(“B2”);
添加(“B3”);
添加(“B4”);
setContentView(R.layout.activity_main);
Button Button=(Button)findViewById(R.id.Button);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
随机r=新随机();
字符串调用=ball.get(r.nextInt(ball.size());
TextView text=(TextView)findViewById(R.id.result);
text.setText(调用);
球。移除(r);
}
});
}
}

我强烈建议您再次学习android的基础知识,最好从开始


希望我能帮忙,

您的
onClick
不必包含所有代码。您可以让它在维护bingo状态的对象上调用一个方法。例如,可以在
onCreate
中创建和初始化对象。有很多方法可以做到这一点,但是早期模块化代码和重构通常是推荐的,即使是对于一些琐碎的程序也是如此。Public!=全球的。Java中没有全局a。