当我得到arraylist的值时,我得到size = 0.我在Class Screen1中启动了ArrayList,但是我无法获得Class Screen2 cont的值。
public class Variables {
public Variables() {
}
private int cont = 0;
private int correct = 0;
public int getCont(){
return cont;
}
public void setCont(int cont){
this.cont = cont;
}
public int getCorrect(){
return correct;
}
public void setCorrect(int correct){
this.correct = correct;
}}
Class Screen1
public class Screen1 extends ActionBarActivity {
Variables variables = new Variables();
ArrayList<Variables> variablesArrayList = new ArrayList<Variables>();
public int cont;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen1);
variables.setCorrect(1);
variables.setCont(1);
variablesArrayList.add(variables);
}
public void sendTela1(View view){
cont = variables.getCont();
cont++;
variablesArrayList.get(0).setCont(cont);
}
}
课程屏幕2
这个类我试图获取ArrayList的值
public class Screen2 extends ActionBarActivity {
Variables variables = new Variables();
ArrayList<Variables> variablesArrayList = new ArrayList<Variables>();
int cont;
ImageView progressbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen2);
progressbar = (ImageView) findViewById(R.id.progressbar);
//this line, the arraylist is returning size = 0
cont = variablesArrayList.get(1);
switch (cont){
case 1:
progressbar.setImageResource(R.drawable.progressbar1);
break;
case 2:
progressbar.setImageResource(R.drawable.progressbar2);
break;
case 3:
progressbar.setImageResource(R.drawable.progressbar3);
break;
case 4:
progressbar.setImageResource(R.drawable.progressbar4);
break;
case 5:
progressbar.setImageResource(R.drawable.progressbar5);
break;
}}
答案 0 :(得分:2)
您的返回尺寸为0,因为在执行screen2
活动时您正在创建新列表:ArrayList<Variables> variablesArrayList = new ArrayList<Variables>();
要解决此问题,您需要将在screen1
中创建的arraylist传递给screen2
。您必须实施parcelable,但这样您才能使用intents
和bundles
传递数据。
答案 1 :(得分:-1)
如果您使用行
在屏幕2中创建新对象ArrayList<Variables> variablesArrayList = new ArrayList<Variables>();
你当然会收到一个空的arrayList。有多种方法可以将数据从一个Activity发送到另一个Activity。 我建议您查看bundle并使用putExtras和更高版本的getExtras通过Intents。但是,既然你有一个模型类,为什么不使用它呢?
在你的模型类中添加
private static ArrayList<Variables> variablesArrayList;
现在添加一些setter和getter来更新和检索列表
// getter
public static ArrayList<Variables> getList() {
return variablesArrayList;
}
// setter
public static void setList(ArrayList<Variables> varArryList) {
this.variablesArrayList = varArryList;
}
现在在screen1上设置你的arrayList,并在screen2(或3,或4,或5,等)中检索它!干杯!