Я знаю, что мы не можем вызвать метод из действия, которое находится в другом действии. Я пытаюсь найти лучший способ обойти это.
Вот мой код. Это метод, который я пытаюсь вызвать. Это в моей ScoreCard
активности.
public void numPlayerSetup(){
{
int[] ids = {
R.id.TextView11, R.id.TextView12, R.id.TextView13
};
for(int i : ids) {
TextView tv = (TextView)findViewById(i);
tv.setVisibility(View.INVISIBLE);
}
}
Вот как я пытаюсь вызвать метод. score
является объектом класса ScoreCard
.
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
int item = spinner.getSelectedItemPosition();
if(item==1){
Log.i("error","This Sucks");
score.numPlayerSetup();
}
}
Я пытался поместить метод numPlayerSetup
в другой класс, который не расширяет Activity
, просто содержит логику, но я не могу использовать метод findViewById()
без расширения активности.
Вот как я это называю.
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
int item = spinner.getSelectedItemPosition();
ArrayList<TextView> myTextViewList = new ArrayList<TextView>();
TextView tv1 = (TextView)findViewById(R.id.TextView14);
myTextViewList.add(tv1);
if(item==1){
Log.i("error","This Sucks");
Setup.numPlayerSetup(myTextViewList);
}
Тогда это класс, который я называю.
public class Setup {
TextView tv;
public static void numPlayerSetup(ArrayList<TextView> tvs){
for(TextView tv : tvs) {
Log.i("crash","This Sucks");
tv.setVisibility(View.INVISIBLE); //this line is highlighted in the debugger as the line my error is coming from
}
}
}
Он регистрирует сообщение в logcat и дает мне исключение нулевого указателя. Отладчик говорит, что значение для телевизора является нулевым. Поэтому я получаю исключение нулевого указателя?