我知道我们不能从另一个 Activity 中的 Activity 调用方法。我正在尝试找出解决此问题的最佳方法。
这是我的代码。这是我要调用的方法。它在我的 ScoreCard
Activity 中。
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 ()
不扩展 Activity 的方法。
我就是这样调用它的。
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 中并给我一个空指针异常。调试器说 tv 的值为空。这就是我收到空指针异常的原因吗?
最佳答案
您可以创建一个 Utitlity 类(不是 Activity)并传入您希望更改的 Textview。并在需要时调用该方法。
public class Setup {
public static void numPlayerSetup(ArrayList<TextView> tvs){
for(TextView tv : tvs) {
tv.setVisibility(View.INVISIBLE);
}
}
}
然后你可以像这样使用它(在Activity中):
ArrayList<TextView> myTextViewList = new ArrayList<TextView>();
TextView tv1 = (TextView)findViewById(R.id.tv1);
myTextViewList.add(tv1);
Setup.numPlayerSetup(myTextViewList);
关于android - 从一个 Activity 中调用另一个 Activity 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294473/